char* 是用“...”创建的吗?和 new 分别在栈和堆上?只是想简单回答一下我的理解是对还是错?

发布于 2025-01-11 13:40:49 字数 1432 浏览 0 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

原谅过去的我 2025-01-18 13:40:49

您可以删除使用 new 运算符创建的内容。

字符串文字具有静态存储期限。他们一直活着直到程序结束。

在此代码片段中,

const char* s1 = "John";
const char* s2 = new char[] {"Cena"};

仅动态分配由字符串文字 "Cena" 初始化的数组。因此,要删除它(以释放分配的内存),您需要将运算符delete []应用于指针s2

delete [] s2;

You may delete what was created using the operator new.

String literals have static storage duration. They are alive until the program ends.

In this code snippet

const char* s1 = "John";
const char* s2 = new char[] {"Cena"};

there is allocated dynamically only the array initialized by the string literal "Cena". So to delete it (to free the allocated memory) you need apply the operator delete [] to the pointer s2.

delete [] s2;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文