C++ 访问已删除对象后崩溃:首次删除会导致线程0x2164在控制台上退出,代码为0(0x0)

C++ 访问已删除对象后崩溃:首次删除会导致线程0x2164在控制台上退出,代码为0(0x0),c++,multithreading,C++,Multithreading,因为这是我的办公室代码,所以我无法显示任何代码。对此表示歉意。希望我能解释我的问题 我有一个收到通知的应用程序。在一个关闭通知中,我删除了我的对象并从通知中注销 我使用的是VisualStudio,当函数被不停地点击时,我已经设置了控制台打印函数名和一些变量。当我玩我的应用程序时,我看到一个崩溃。我有一个向量和一些物体,向量的大小通常是1 在查看控制台日志时,我发现无论何时,我的应用程序工作正常,我都会看到三条消息,显示对象析构函数中的向量大小以及对象删除后的向量大小。这类似于1和一些堆栈以及0

因为这是我的办公室代码,所以我无法显示任何代码。对此表示歉意。希望我能解释我的问题

我有一个收到通知的应用程序。在一个关闭通知中,我删除了我的对象并从通知中注销

我使用的是VisualStudio,当函数被不停地点击时,我已经设置了控制台打印函数名和一些变量。当我玩我的应用程序时,我看到一个崩溃。我有一个向量和一些物体,向量的大小通常是1

在查看控制台日志时,我发现无论何时,我的应用程序工作正常,我都会看到三条消息,显示对象析构函数中的向量大小以及对象删除后的向量大小。这类似于1和一些堆栈以及0,因为我移除了对象

然而,在crash的工作流中,我只看到大小为1的第一条消息,然后我看到我放在object的析构函数中的堆栈跟踪,但没有大小为0的消息。但是,还有其他行具有:

The thread 0x2164 has exited with code 0 (0x0).
The thread 0x1734 has exited with code 0 (0x0).
The thread 0x670 has exited with code 0 (0x0).
The thread 0x1b20 has exited with code 0 (0x0).
The thread 0x2310 has exited with code 0 (0x0).
The thread 0x1f40 has exited with code 0 (0x0).
The thread 0x164c has exited with code 0 (0x0).
The thread 0x15fc has exited with code 0 (0x0).
我已在Visual Studio中启用了异常处理/报告,但未获得任何异常

结果是,应用程序再次收到通知,并且应用程序再次尝试访问该对象,它会崩溃


我不知道如何开始解决这个问题?

我猜堆栈正在损坏。也许可以放置代码来检查您是否正在访问有效对象。那么,如何才能找到对象是否有效。一旦我访问它,应用程序就会崩溃。你不必访问它来查看它的内存位置是否有效。一个简单的assertobject!=NULL可以。此对象正由多个指针指向。。不使用将指针设置为NULL。