char *p = new char; DWORD WINAPI THREAD(LPVOID lpParameter) { while(1) { if(p != NULL) { delete p; p = NULL; p = new char; } } }
int main() { HANDLE handle = CreateThread(NULL, 0, THREAD, NULL, 0, NULL); CloseHandle(handle);
while(1) { if(p != NULL) { delete p; p = NULL; p = new char; } }
return 0; }
多核多线程时,如上代码必定会出现重复delete导致程序挂掉.其实这个问题很容易看出来,写在这里是为了提醒一下自己...