我在理解 C++ 中动态内存分配的一部分时遇到了问题。
我知道它的标准做法是做这样的事情来避免内存泄漏:
double* pvalue = NULL; // Pointer initialized with null
pvalue = new double; // Request memory for the variable
*pvalue = 29494.99;
delete pvalue;
但是,我见过很多这样的源代码,delete
从未在那里用于释放内存:
char* text = "something";
所以问题很简单:每次我不再需要 char 指针(或任何其他指针)时,我都应该使用 delete
吗?还是有一些异常(exception)?
我读了很多书,但我只是越来越困惑,所以我希望有人能帮助我。
编辑:
谢谢你的解释。我终于明白了,我可以放心地更改我的源代码了!
最佳答案
您应该删除
您使用new
创建的所有内容,除此之外别无其他。
char* text = "something";
这不会用 new
创建一些东西,所以你不应该 delete
它。
事实上,该语句不会创建任何东西(除了指针)- 它设置text
以指向程序启动时创建的字符串。
关于C++ 动态内存分配 - char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31283105/