这只是代码:
class TestApp {};
int main()
{
TestApp* test= new TestApp;
{
std::shared_ptr<TestApp> testPtr (test);
}
delete test;
}
问题是这样的:为什么此应用程序在“删除测试”时不会崩溃?否则,当我移除示波器支架时会崩溃。
答案 0 :(得分:1)
由于undefined behavior。尝试删除已删除的内容会导致UB。您的两个用例都是错误的,并导致UB。
您正在使用g ++并收到以下消息的机会:
malloc
如果使用的是Visual C ++编译器,则会观察到类似的异常。都带有或不带有括号。