我在理解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";
所以问题很简单:我应该使用delete
每次我不再需要一个字符指针(或任何其他字符)?或者有一些例外吗?
我已经阅读了很多,我只是变得更加困惑,所以我希望有人可以帮助我。
编辑:
谢谢你的解释。最后我明白了,我可以更改源代码而不用担心!
答案 0 :(得分:3)
您应该delete
使用new
创建的所有内容,而不是其他任何内容。
char* text = "something";
这不会创建new
的内容,因此您不应该delete
。
实际上,该语句不会创建任何(除了指针) - 它会将text
设置为指向程序启动时创建的字符串。