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

    delete []kung;
}

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

是否因为kung指针指向了无法在内存中分配的常量字符串?

最佳答案

因为您不能delete字符串文字(这是kung所指向的)。

您也不能删除自动存储字符串(因此,它实际上不是文字部分):

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

只有delete[]分配的new[]内存。

08-17 23:39