我正在尝试做一个支持Unicode的C++ hello world,但我有点卡住了。
我创建了一个指向TCHAR的指针,我认为它是一个char数组,在使用它之后,我尝试删除它。它崩溃了,显示为Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)。
检查互联网,有人说这是因为使用错误的删除。我尝试了这两个删除,但它仍然给出相同的消息。
我是不是错过了什么明显的东西?
我尝试过的代码:
TCHAR *str=TEXT("おはよう, World!");
delete[] str;还尝试了:
TCHAR *str=TEXT("おはよう, World!");
delete str;发布于 2012-04-11 15:30:30
TCHAR *str=TEXT("おはよう, World!");您没有分配任何内容,因此不需要删除内存。简单地说,不要调用delete[]。TEXT是一个宏,而不是一个返回一些你应该自己管理的内存的函数。
这就像调用delete一样
char* x = "bla";
delete[] x;这是非法的,因为你并不拥有内存。
发布于 2012-04-11 15:31:24
如果你调用了delete,你只需要调用new,因为你没有调用,这里不需要调用delete。
这里的字符串是在实现定义的内存区而不是动态内存(也称为堆)上创建的。
https://stackoverflow.com/questions/10101651
复制相似问题