当我删除这个char时,为什么我得到一个调试断言失败block_type_is_valid

时间:2012-07-29 21:21:20

标签: c++ memory

 int main(void) {
    const char* kung = "Foo";

    delete []kung;
}

在这段代码中,为什么我会得到以下debug assert failed block_type_is_valid

是否因为kung指针指向内存中的一个不能解除分配的常量字符串?

1 个答案:

答案 0 :(得分:4)

因为你不能delete字符串文字(kung指向的字符串)。

您也无法删除自动存储字符串(因此它不是真正的文字部分):

char kung[] = "Foo";
delete []kung;   //still illegal

仅使用delete[]分配的new[]内存。