我正在尝试创建一个支持Unicode的C ++ hello世界,但我有点陷入困境。
我做了一个指向TCHAR的指针[我认为它是一个char数组],在使用之后,我尝试删除它。它崩溃说Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
。
检查互联网时,有人说这是因为使用了错误的删除。我尝试了两种删除操作,但它仍然提供相同的信息。
我是否错过了一些明显的东西?
我试过的代码:
TCHAR *str=TEXT("おはよう, World!");
delete[] str;
也尝试过:
TCHAR *str=TEXT("おはよう, World!");
delete str;
答案 0 :(得分:5)
TCHAR *str=TEXT("おはよう, World!");
您没有分配任何内容,因此无需删除内存。只需不要拨打delete[]
。 TEXT
是一个宏,而不是一个返回你应该自己管理的内存的函数。
就像在
之后调用删除一样char* x = "bla";
delete[] x;
只是非法,因为你没有自己的记忆。
答案 1 :(得分:4)
如果您拨打delete
,则只需致电new
,因为您没有。您不需要在此处致电delete
这里的字符串是在实现定义的内存区域而不是动态内存(又名堆)