Shared_ptr并删除测试

时间:2018-09-17 10:45:47

标签: c++ shared-ptr

这只是代码:

class TestApp {};

int main()
{
    TestApp* test= new TestApp;

    {
        std::shared_ptr<TestApp> testPtr (test);
    }

    delete test;
}

问题是这样的:为什么此应用程序在“删除测试”时不会崩溃?否则,当我移除示波器支架时会崩溃。

1 个答案:

答案 0 :(得分:1)

由于undefined behavior。尝试删除已删除的内容会导致UB。您的两个用例都是错误的,并导致UB。

您正在使用g ++并收到以下消息的机会:

malloc

如果使用的是Visual C ++编译器,则会观察到类似的异常。都带有或不带有括号。