【发布时间】:2015-12-13 13:23:56
【问题描述】:
这是我的代码
int main()
{
char *something = new char[10];
something = "test";
cout << something;
delete[] something;
return 0;
}
当我调试它时,它会打开应用程序并给我一个错误窗口,提示 Debug Assertion Failed: _CrtlsValidHeapPointer(block)
谢谢。
【问题讨论】:
-
something = "test"这不是*将"test"复制到something,而是*让测试指向字符串常量"test"的地址。您只需重新分配指针。delete[]尝试释放静态字符串。启用警告,因为它应该触发一个! -
某事="测试"; -- 这将使某些指针指向字符串常量。失去了某些东西的原始价值。然后,当您删除某些内容时,您不会删除分配的 char[10] 而是尝试删除字符串常量并且出现问题...
标签: c++ heap-memory dynamic-memory-allocation