gpt4 book ai didi

c++ - 为什么有效? C++内存管理

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:56:33 24 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
Why the below piece of code is not crashing , though i have deleted the object?

今天我发现我对C++内存管理一无所知。请看一下这段代码:

class A
{
public:
A(){std::cout << "constructor called" << this << std::endl;}
~A(){std::cout << "destructor called" << this << std::endl;}
void test (){std::cout << "test" << this << std::endl;}
};

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);

A *aa = new A();

delete aa;
aa->test();
aa->test();
aa->test();
std::cout << "still works\n";
return a.exec();
}

为什么不崩溃?为什么尽管调用了析构函数它仍然继续执行?当我调用 test 方法时,我会处理不再属于该应用程序的内存。

更令人惊讶的是,即使我在 delete aa; 之后立即插入 aa = NULL;,它仍然有效。 test 方法被正确调用。我需要承认我完全糊涂了。如果没有效果,析构函数和分配 NULL 的目的是什么?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com