我可以删除指针但保留变量吗[关闭]

Posted

技术标签:

【中文标题】我可以删除指针但保留变量吗[关闭]【英文标题】:Can I delete a pointer but keep the variable [closed] 【发布时间】:2020-04-06 18:04:13 【问题描述】:

谁能给我下面发布的问题的答案。

工具与本文中的问题相同

Delete a dynamic array but keep a pointer

然后我可以删除 new_arr 吗?还是自动处理?

如果我要删除它,我会使用:

delete [] new_arr;

delete new_arr;

?

【问题讨论】:

请将实现复制粘贴到这个问题。减少查看完整问题的点击次数将提高响应率。 此处的所有问题都必须包含所有相关信息在问题本身中以纯文本形式。链接可以随时停止工作,使问题变得毫无意义。无法复制/粘贴以图像形式显示的代码、数据或错误;或编辑或编译以供进一步研究和调查。这个问题必须是edited,并且所有链接和图像都被删除并替换为所有相关信息,作为纯文本。所有代码必须满足minimal reproducible example 的所有要求。您可以在此处找到许多其他问题,以纯文本形式解释所有内容。这个也没有理由不能。 另外,请说明为什么该链接问题的答案不能在此处回答您的问题。 这能回答你的问题吗? Delete a dynamic array but keep a pointer 您链接的答案已被删除,因此不是每个人都可以看到它 【参考方案1】:

您不是“删除指针”,而是删除您分配的一些对象,通过提供指向它的指针来指定要删除的对象。

当您使用new 分配对象时,您可以通过调用delete 来释放它。这些调用必须一对一匹配,并且您传递给delete 的值必须是您从new 获得的值。

类似地,对于数组,您使用new[]delete[],再次一对一地匹配它们。

delete [] new_arr; 之后,new_arr 中的值无效,因为它指向一个不再存在的对象。调用delete new_arr; 会出错,因为您传递的值并不指向new 分配的对象,因此没有需要释放的对象。

【讨论】:

以上是关于我可以删除指针但保留变量吗[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

我可以在保留 lambda 表达式的同时删除双重评估吗

我可以保留这个指针的副本吗?

matlab如何只保留有用部分数据,把大部分无用的删除

销毁会话,但保留一个变量集

删除文本编辑器中的功能,保留参数[重复]

(为啥)我应该在打开的文档中保留指向 FileWrapper 的指针吗?