公共成员变量何时死亡

When do public member variables die?

本文关键字:何时死 变量 成员      更新时间:2023-10-16

我有以下C++类:

class DEF
{
   //...
}
class ABC
{
   public:
      DEF my_def;
      ~ABC();
   //...
}

在某个地方:

ABC* abc = new ABC(...);
delete abc;

我的问题:

调用delete abc后,my_def是否可以访问?删除后执行abc->my_def.somefunc()是否安全?-

否,abc的析构函数运行后,其成员将按声明的相反顺序销毁。删除abc时,其所有内存都是空闲的。这包括您的示例中的my_def

也许这个问题对你有用:什么是智能指针,我什么时候应该使用它?

附录:C++的一个主要问题是未定义的行为。如果在此期间内存没有被重用,诸如在空闲后使用之类的编程错误可能会在80%的时间内出现。但有可能会覆盖不相关的内存和/或允许读取外部数据。这是一个严重的安全问题,在这一点上,崩溃的程序是最好的希望。