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인지 확인을 먼저 해주자.
반응형
'Development Experience > C, C++' 카테고리의 다른 글
C++ CopyConstructible (0) | 2020.12.08 |
---|---|
HeapAlloc, LocalAlloc, GlobalAlloc 차이 (0) | 2020.11.25 |
DLL이 경로에 있음에도 DLLNotFound Exception이 뜬다면.. (0) | 2019.11.12 |
C++ <-> C# 간 마샬링 시 메모리 할당 및 해제 (0) | 2019.10.14 |
Error Message: 식에 정수 또는 범위가 지정되지 않은 열거형 형식이 있어야 합니다 (2) | 2019.10.03 |