释放缓冲区时出错

时间:2013-04-24 01:54:43

标签: c winapi

我的代码:

wchar_t buffer[64];

wsprintf(buffer, L"%d, %d, %d", x, y, z);
SendMessage(hwndEdit, WM_SETTEXT, NULL, (LPARAM)buffer);

free(buffer); // <-- crashes

代码在不释放缓冲区时工作正常,但在使用空闲(缓冲区)时会崩溃。

这条线是否必要,如果没有,为什么不呢?使用后是不是需要释放内存?

1 个答案:

答案 0 :(得分:3)

buffer是在堆栈上分配的,而不是在堆上,你不需要自己free

如果使用buffer(在C中)或malloc(在C ++中)动态创建new,则需要free(在C中)或delete (用C ++编写)动态数组在堆上创建。静态数组(编译时已知的大小)在堆栈上分配。