할당되지 않은 메모리에서 액세스하는 동안 런타임 오류가없는 이상한 문제가 발견되었습니다.할당 해제 된 메모리에서의 액세스
class Test {
public:
Test(int idx) : c(idx) {}
~Test() {
std::cout << "destructor\n";
}
void Delay() {
Sleep(500);
std::cout << "delay " << c << "\n";
}
protected:
int c;
};
int _tmain(int argc, _TCHAR* argv[])
{
for (int idx = 0; idx < 100; idx++) {
Test* test = new Test(idx);
Test*temp = test;
delete test; test = NULL;
temp->Delay();
}
std::cout << "Exit\n";
Sleep(1000);
return 0;
}
변수 "test"는 할당이 해제되고 임시 메모리 주소는 "test"입니다. 그러나 "temp"와 함께 Delay() 함수를 호출하면 런타임 오류가 발생하지 않습니다. 어떻게 알 수 있습니까?
Delay() 함수에서 IsBadXXXPtr() 함수를 검사하여 메모리 오류가 없음을 확인했습니다.
무엇이 잘못 되었나요?