删除TCHAR指针

时间:2012-04-11 07:29:03

标签: c++ delete-operator

我正在尝试创建一个支持Unicode的C ++ hello世界,但我有点陷入困境。

我做了一个指向TCHAR的指针[我认为它是一个char数组],在使用之后,我尝试删除它。它崩溃说Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)

检查互联网时,有人说这是因为使用了错误的删除。我尝试了两种删除操作,但它仍然提供相同的信息。

我是否错过了一些明显的东西?

我试过的代码:

TCHAR *str=TEXT("おはよう, World!");
delete[] str;

也尝试过:

TCHAR *str=TEXT("おはよう, World!");
delete str;

2 个答案:

答案 0 :(得分:5)

TCHAR *str=TEXT("おはよう, World!");

您没有分配任何内容,因此无需删除内存。只需不要拨打delete[]TEXT是一个宏,而不是一个返回你应该自己管理的内存的函数。

就像在

之后调用删除一样
char* x = "bla";
delete[] x;

只是非法,因为你没有自己的记忆。

答案 1 :(得分:4)

如果您拨打delete,则只需致电new,因为您没有。您不需要在此处致电delete 这里的字符串是在实现定义的内存区域而不是动态内存(又名堆)

上创建的