C++ 动态内存分配 - char*
C++ Dynamic Memory Allocation - char*
我在理解 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
?还是有一些例外?
我读了很多书,但我只是越来越困惑,所以我希望有人能帮助我。
编辑:
感谢您的解释。我终于明白了,我可以放心地更改我的源代码了!
您应该 delete
使用 new
创建的所有内容,除此之外别无其他。
char* text = "something";
这不会用 new
创建一些东西,所以你不应该 delete
它。
事实上,该语句不会创建 任何东西(除了指针)- 它设置 text
指向一个字符串,该字符串是在您的程序创建时创建的开始了。
我在理解 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
?还是有一些例外?
我读了很多书,但我只是越来越困惑,所以我希望有人能帮助我。
编辑:
感谢您的解释。我终于明白了,我可以放心地更改我的源代码了!
您应该 delete
使用 new
创建的所有内容,除此之外别无其他。
char* text = "something";
这不会用 new
创建一些东西,所以你不应该 delete
它。
事实上,该语句不会创建 任何东西(除了指针)- 它设置 text
指向一个字符串,该字符串是在您的程序创建时创建的开始了。