正在释放的 C++ 指针未分配。不免费

C++ Pointer being freed was not allocated. Not calling free

我正在编写一个处理视频输入的程序,它运行一段时间后有时会以 "pointer being freed was not allocated" 退出。但是,在我的程序中,我从来没有调用 free 或 malloc。我正在传递我在向量中定义的 class 的对象,程序使用 pthreads 将输入与处理分开。除了在同一个指针上两次调用 free 而没有重新分配它之外还有什么可能导致这个问题?

不幸的是,由于错误发生需要很长时间,而且由于多线程,我不知道这个错误发生在哪里,所以我不能包含我的代码示例。

您可能想要研究使用 C++11 中提供的安全指针。他们做了很多好事,但对你来说最好的用途是为你处理内存释放。

This 是您需要使用的库。

根据您分享的少量信息,我相信 Shared Pointer 就是您要找的东西(但也请查看其他 类,Weak Shared Pointer 和 Unique Pointer 可能是在您的应用程序的某些部分需要)。

如果您有任何其他问题,请提出具体问题。