관리 메뉴

KorSA

C++ Heap corruption 원인 본문

Development Experience/C, C++

C++ Heap corruption 원인

Praiv. 2020. 4. 8. 18:16
320x100

C++ 로 코딩을 하다보면 간헐적으로 Heap Corruption이 발생하는데, 그때마다 매번 같은 실수를 반복한 게 원인이었다.

 

바로 메모리를 두 번 해제하는 것.

 

MyClass myVar = new MyClass();

for(int i = 0; i < 2; i++)

{

    delete myVar;

}

 

이렇게 하면 두번째 루프에서 이미 메모리 해제된 myVar을 또다시 메모리 해제한다.

이 때 Heap Corruption이 발생한다.

 

if(myVar != nullptr)

{

    delete myVar;

    myVar = nullptr;

}

 

요렇게 메모리를 해제하고 나서 변수의 값을 NULL로 초기화해주자.

그리고 메모리를 해제하려 할 때 변수의 값이 NULL인지 확인을 먼저 해주자.

728x90
728x90
Comments