Jak*_*ake 7 c++ memory runtime-error new-operator delete-operator
我需要一个C++复习.为什么这会给出内存异常?
pear = new char[1024];
pear = "happy go lucky";
delete [] pear; // exception
Run Code Online (Sandbox Code Playgroud)
pear = new char[1024];
Run Code Online (Sandbox Code Playgroud)
从堆分配1024个字符的内存并pear指向它的开头.
pear = "happy go lucky";
Run Code Online (Sandbox Code Playgroud)
pear 现在指向驻留在只读段中的字符串文字,并且先前分配的内存被泄露.
delete [] pear;
Run Code Online (Sandbox Code Playgroud)
您尝试释放只读字符串,这是一种未定义的行为,表现为运行时异常.
pear ="快乐幸运";
这将替换分配的指针new char[].所以现在你delete[] pear试图释放静态分配的字符串.
那很糟.您只能使用delete自己分配的内容new.既然你覆盖了(并丢失了)那个指针,你就不能delete这样.
| 归档时间: |
|
| 查看次数: |
2902 次 |
| 最近记录: |