C ++动态内存分配 - char *

时间:2015-07-08 03:37:42

标签: c++ c char dynamic-memory-allocation

我在理解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每次我不再需要一个字符指针(或任何其他字符)?或者有一些例外吗?

我已经阅读了很多,我只是变得更加困惑,所以我希望有人可以帮助我。

编辑

谢谢你的解释。最后我明白了,我可以更改源代码而不用担心!

1 个答案:

答案 0 :(得分:3)

您应该delete使用new创建的所有内容,而不是其他任何内容。

char* text = "something";

这不会创建new的内容,因此您不应该delete

实际上,该语句不会创建任何(除了指针) - 它会将text设置为指向程序启动时创建的字符串。