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

标签 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";

所以问题很简单:每次我不再需要 char 指针(或任何其他指针)时,我都应该使用 delete 吗?还是有一些异常(exception)?

我读了很多书,但我只是越来越困惑,所以我希望有人能帮助我。


编辑:

谢谢你的解释。我终于明白了,我可以放心地更改我的源代码了!

最佳答案

您应该删除您使用new 创建的所有内容,除此之外别无其他。

char* text = "something";

这不会用 new 创建一些东西,所以你不应该 delete 它。

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

关于C++ 动态内存分配 - char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31283105/

相关文章:

c++ - Xcode将简单的C++ 20代码段标记为错误,但使用最新的LLVM 10.0.0 Clang编译器正确编译

c - PWM 输出在 STM32F10x OPEN107V 开发板上不起作用

c++ - 从 char 获取字符代码

c++ - 在 C++ 项目中使用 tinyXml2

c++ - 为什么有人会使用#define 来定义常量?

c++ - 包含 emscripten header 时如何修复编译错误?

计算 1 到 N 的整数中 0 出现的次数

c - 存储从fgetc获得的字符

c - c中逐个字符的结构成员

c++ - 为什么 C++ 变量是指针时不需要正确定义?