0
我的代码时:错误释放缓冲
wchar_t buffer[64];
wsprintf(buffer, L"%d, %d, %d", x, y, z);
SendMessage(hwndEdit, WM_SETTEXT, NULL, (LPARAM)buffer);
free(buffer); // <-- crashes
的代码工作正常时不释放缓冲区,但是当崩溃免费(缓冲区)被使用。
这是行必要的,如果没有,为什么不呢?使用后是否需要释放内存?
我明白了,所以当我应该释放一个缓冲区?我如何知道缓冲区是否分配在堆栈上? – ChaseTheSun 2013-04-24 01:56:54
@ChaseTheSun看到我更新后? – taocp 2013-04-24 01:57:49
@ChaseTheSun如果_explicitly_分配的缓冲区,例如用'malloc'或类似的函数,那么你需要释放它。编译器完全处理堆栈上的变量。 – 2013-04-24 01:58:00