
class A{public: int hp = 0;};int main(){ A* a = new A(); delete a; a->hp = 200;}위 코드를 보자 분명 delete를 하고 a = nullptr로 밀어준다음에 nullptr확인을 안하고 해제된 메모리에 값을 쓰고 있다.분명히 잘못된 코드인데 때에 따라서 크래쉬가 날 수도 있고 안 날 수도 있다. delete키워드가 소멸자를 호출해주고 메모리를 해제하는 것은 맞지만 메모리 해제를 바로 os에게 요청하지 않기때문이다.delete는 객체가 차지했던 메모리 블록을 힙에 반환한다. 여기서 중요한 부분은 메모리 블록을 운영체제에게 즉시 반환하는게 아니라 힙 관리에게 반환한다는 것이다.힙 관리자는 반환된 메모리 블록을 재사용가능한 공간으로 관리한다. 따라서..

스핀락스핀락은 스핀락은 임계 영역(critical section)에 접근하기 위해 락을 획득할 때까지 CPU를 멈추지 않고 계속 루프를 돌면서 대기하는 방식의 동기화 기법이다. 장점으로는 '컨텍스트 스위칭이 발생하는 다른 동기화 기법보다 오버헤드가 낮다.'단점으로는 '다수의 쓰레드가 경쟁할 경우, CPU 사용률이 급격히 증가할 수 있다.' 스핀락기법을 사용할 때 컨텍스트 스위칭 비용이 다른 동기화 기법들 보다 낮은 이유는 System Call 호출을 통해 커널 모드로의 전환이 발생하지 않기 때문이다. 예로 this_thread::sleep_for(std::chrono::milliseconds(100)); 를 호출하게 되면 쓰레드는 '커널 모드'로의 전환이 발생한다.OS는 현재 쓰레드를 대기 목록에 추가하..
![[네트워크] OSI 7 Layer란?](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblrCwB%2FbtsE9JSMleA%2F52KiQqYyOhalSGCBgip6a0%2Fimg.png)
OSI 7 Layer와 Packet생성과정에 대해 정말정말 간단히 정리한 글입니다. (저도 공부중이라...) (많은 부분이 생략되어 있고 틀린 부분도 있을 수 있습니다.) 서론 개념적으로는 "OSI 7 계층은 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것을 말합니다" 실제로 구글링을 하면 보통 이런 이미지가 굉장히 많습니다... 무엇을 뜻하는지 조차 잘 모르겠는데 일단 단어 의미부터 보도록 하겠습니다. Layer 일단 Layer라고 하는 것은 어떤 '층'을 말합니다. 단계적으로 발생하는 것을 계층 구조로 나눈 것인데 가령 대학교를 졸업했다는 것은 초등학교 => 중학교 => 고등학교 => 대학교 테크트리를 탓다는 것입니다. 이를 계층 구조로 나타내면 아래와 같습니다. 중학교를 다닌다는 것은 초등학교..