尽管我已经删除了该对象,为什么下面的代码没有崩溃?

2023-11-23

class object
{
  public:
    void check()
    {
      std::cout<<"I am doing ok..."<<std::endl;
    }
};

int main()
{
  object *p = new object;
  p->check();
  delete p;
  p->check();
  delete p;
  p->check();
}

EDIT: 大师们,我对许多“它可能崩溃或可能不会”的说法感到困惑..为什么没有一个标准来说明,我们如何处理使用“删除运算符”删除的内存块..?有任何输入吗?


因为编译器按照自己的方式行事后,它实际上看起来像这样:

object::check( object* this )
{
     // do stuff without using this
}

int main()
{        
     object *p = new object;
     object::check( p );
     delete p;
     object::check( p );
     delete p;
     object::check( p );
 }

由于您没有触及“这个”,因此您实际上并没有访问任何不良记忆。

不过,删除 p 两次应该会导致崩溃:

http://www.parashift.com/c++-faq-lite/freestore-mgmt.html#faq-16.2

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尽管我已经删除了该对象,为什么下面的代码没有崩溃? 的相关文章

随机推荐

  • 没有 'owned by' 属性的 Postgres 序列在 Django 1.3 中不会返回 id

    最近从 Oracle 迁移到 Postgres 并从 Django 1 2 升级到 1 3 后 我们在将对象保存到数据库时开始遇到问题 当调用 save 时 不会返回 id 即使通过标准 django 管理面板保存标准 django aut
  • android:选择图库中的多个图像并启动隐式意图

    如何获取所有选定图像的图像路径或仅将它们显示在我的应用程序中 当用户在图库中选择图像并按共享按钮时 我可以启动隐式意图并将其显示在我的 imageView 中 如下所示 ImageView iv ImageView findViewById
  • 将时间序列数据提供给有状态 LSTM 的正确方法?

    假设我有一个整数序列 0 1 2 并希望根据最后 3 个整数来预测下一个整数 例如 0 1 2 gt 5 3 4 5 gt 6 etc 假设我像这样设置模型 batch size 1 time steps 3 model Sequentia
  • 钩住时间编织块

    我想对 knitr 块进行计时 并记录使用 LaTeX 输出中的注释渲染它们所花费的时间 我尝试过以下钩子 now Sys time knit hooks set timeit function before if before now l
  • JavaScript 函数表达式前面的加号

    我一直在寻找有关立即调用函数的信息 在某个地方我偶然发现了这个符号 function console log Something 有人可以向我解释一下是什么吗 函数前面的符号意味着 做什么 它强制解析器处理以下部分 作为一种表达方式 这通常
  • 将边框应用于图像形状

    在我的应用程序中 我有不同形状的各种图像 如树 云 附有示例图片 我想以编程方式为这些形状添加边框 就像如果图像是树那么需要突出显示树的形状 我无法使用 callayer 因为它会将边框应用于 UIImageView 谁能指导我如何实现这一
  • GCC下未定义的引用与LTO交叉编译静态库

    我正在尝试使用 GCC 4 9 2 从 Linux x86 64 pc linux gnu 交叉编译 Windows x86 64 w64 mingw32 的应用程序 当构建链接到静态库的目标并使用链接时优化时 我从链接器中得到目标从库中使
  • 评估 Main(string[] args) 是否太过分了

    我有以下内容 想知道初始测试是否过度 static void Main string args if args Length 0 args null do X else do Y 换句话说 我要问的是 args Length 是否有可能为零
  • 如何在android 4.0 ICS中启用底部菜单按钮

    I want to enable bottom menu button and Which theme will be use for this menu button I try many theme but did not work f
  • 如何处理和提取图像中的文本

    我正在尝试使用 python cv2 从图像中提取文本 结果是可悲的 我找不到改进我的代码的方法 我相信在提取文本之前需要处理图像 但不确定如何处理 我尝试将其转换为黑白 但没有成功 import cv2 import os import
  • Jetpack Compose 性能问题仅发生在多模块项目中

    我在 Jetpack Compose 中开发了一个相当复杂的键盘布局 最初 布局工作正常 按下按键时动画运行非常流畅 不幸的是 由于事件而进行了几次重组之后 动画和一切都变得非常缓慢和滞后 我尝试对 Jave 方法调用进行采样 但我只能看到
  • Couchbase 4010 错误

    我一直在测试 Couchbase 5 并创建了一个名为fp conversion data其中包含一些 JSON 数据 我一直在尝试运行一些简单的查询 例如 SELECT FROM fp conversion data limit 5 我没
  • 移出的物体是否需要销毁?

    如果我移动构建a from b 还是吗必要的破坏b 或者我可以不这样做就逃脱吗 这个问题在实施过程中闪过我的脑海optional
  • 如何只保留数组中符合特定条件的项?

    我有一个数组 我想过滤它以仅包含符合特定条件的项目 这可以用 JavaScript 完成吗 一些例子 1 2 3 4 5 6 7 8 I only want 2 4 6 8 i e the even numbers This is an a
  • 如何在 Webkit GTK 中处理自定义 URL 方案?

    假设我想使用WebKitWebView在 GTK 中显示一些静态 HTML 页面 这些页面使用自定义 URL 方案 我们称之为custom 此方案表示一个本地文件 在生成 HTML 时 其位置事先未知 我所做的就是连接到navigation
  • 安卓中的AT命令

    我想在我的应用程序中使用 AT 命令来设置 GSM 调制解调器的一些命令 我搜索了谷歌 但找不到任何好的答案 你有什么解决办法吗 我可以使用ADB向android发送AT命令吗 首先你必须root手机然后在adb shell中 su ech
  • 如何创建支持通用 id(包括自动生成的 id)的通用实体模型类?

    我有三个kinds表的主键数 INT自动生成的主键使用AUTO INCREMENT来自数据库供应商的容量 MySQL CHAR X 将用户可读值存储为键的主键 其中 X 是数字且 50 复杂主键 由表的 2 或 3 个字段组成 此外 还有一
  • TabControl 的 TabItems 共享相同的内容...不想要

    以下示例 xaml 使每个选项卡项共享相同的 TextBox 我想 在某种程度上 这是有道理的 但这是意想不到的行为 几乎感觉像是一个错误 我在文档中找不到任何解释该行为或如何正确解决该行为的信息
  • 担心在 itune 配置门户中的团队帐户下的不同组之间共享分发证书的私钥

    我们是一所大型大学 在 Apple itunes 配置门户中拥有一个团队帐户 我们有多个不同的小组开发iOS应用程序 这些应用程序将在团队帐户 大学名称 下发布 看来苹果只允许创建一份分发证书 要发布应用程序 每个组都需要私钥来签署应用程序
  • 尽管我已经删除了该对象,为什么下面的代码没有崩溃?

    class object public void check std cout lt lt I am doing ok lt