zhitian 发表于 2026-6-11 12:33:28

指针销毁后为何还能继续使用?

<火山程序 类型 = "通常" 版本 = 1 />

包 火山.程序

类 启动类 <公开 基础类 = 程序类>
{
    方法 启动方法 <公开 类型 = 整数>
    {
      // 在此处填入自己的代码
      变量 局部变量 <类型 = 变整数>
      局部变量 = 创建对象指针 (嵌入式测试类)
      @ ((@dt<嵌入式测试类>*) @<局部变量>) -> youtest(1999);

      销毁对象指针 (局部变量)

      @ ((@dt<嵌入式测试类>*) @<局部变量>) -> youtest(2999);


      返回 (1)
    }

    #
}

类 嵌入式测试类
{
    变量 成员变量 <类型 = 整数>

    # @ <include>
    # @ public:
    # @ void youtest(int udata){@<成员变量> = udata; @<方法_输出成员变量>();}
    # @ </include>

    方法 方法_输出成员变量
    {
      可跳转调试输出 (成员变量)
    }
}

请帮忙看下上面的代码,第9行我销毁了指针,为何后面还能正常调用? 要如何解决这个问题?

zhitian 发表于 2026-6-11 12:37:23

嵌入式测试类下面的嵌入方法 @ public: 这个加不加都不影响外部使用。:dizzy:

小小小小鸟 发表于 2026-6-11 14:58:55

可能是销毁后会收到内存池了,但是该内存有没有被别的地方使用,所以数据是没变的。你可以在销毁后多申请几个对象指针,然后你再测试下 看数据还一样不~

wangvoldp 发表于 2026-6-11 15:35:22

估计是内存未被再次使用, 你用一个析构函数输出下 看他执行了没就知道了

aixunsoft 发表于 2026-6-11 16:25:09

内存释放,只是告诉内存管理系统,这个内存我不用了,这块内存里面的内容,是不会被抹除的,直到这块内存,被再次申请使用,写入了新的数据,但是释放后再用,风险巨大,要是被其他地方使用了这块内存,就会造成异常。还有那个你不写默认就是public
页: [1]
查看完整版本: 指针销毁后为何还能继续使用?