[英]C++ Dynamic Memory Error
这是我的代码
int main()
{
char *something = new char[10];
something = "test";
cout << something;
delete[] something;
return 0;
}
当我调试它时,它会打开应用程序并给我一个错误窗口,说 Debug Assertion Failed: _CrtlsValidHeapPointer(block)
谢谢你。
在这种情况下, something
是指向字符的指针。 在第二行中,您将something
的值更改为指向“test”的第一个字符,而不是您所期望的,即将“test”放在something
指向的内存中。
当您delete
您试图删除“测试”所在的内存,它是只读内存。
一般来说,您应该考虑将std::string
与C++
。 如果您出于其他原因使用char *
,请查看strcpy
和strncpy
您需要使用 strcpy 将“test”复制到您的数组中。
strcpy(something, "test"); // or even better user strncpy
相反,你有:
something = "test";
关于用新地址覆盖存储在 something 变量中的指针的代码。 编译器生成的字符串常量的地址。 然后 delete [] 作用于这个不指向 new 返回的动态分配内存的新地址。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.