Development Experience/C, C++
C++ Heap corruption 원인
Praiv.
2020. 4. 8. 18:16
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인지 확인을 먼저 해주자.
반응형