对QByteArray进行清除的调用会生成以下异常:
* glibc检测到* /home/yan/FPS2 2/FPS2 2:双重免费或损坏(快件):
0 ? 1?
2免费
3 QByteArray::clear()
4 FPSengine::getDatagram
5 FPSengine::xmitData
6 FPSengine::getData
7线程数据记录::运行
8 ??
9 start_thread
10克隆
11 ??0
这是个qt错误,还是与我的代码有关?我知道QObjects线程不安全(QT定义,不是多个线程调用同一个对象实例的相同函数),但我的函数有互斥。而且,即使同一个函数经常被调用,我也很少得到这个错误。防止这种情况的一种方法是env var MALLOC_CHECK_ 0
这个url与一个类似的问题有关,一些帖子似乎暗示它是由一个不兼容的glibc版本引起的。
*** glibc detected *** perl: double free or corruption (!prev): 0x0c2b7138 ***
发布于 2010-02-26 01:02:24
这是由于应用程序是多线程的,对象属于主线程,但在另一个线程中使用,即使我在QBytearray上使用了互斥,但使用它执行readDatagram的UDPsocket也在mainthread...and中--是的,我需要udpSocket也在主线程中。
发布于 2010-02-04 05:44:04
它可能是许多不同的东西,包括引用函数调用返回的临时QByteArray
,但在Qt中不太可能是一个bug。
下面是一些调试的想法:
发布于 2010-02-04 05:45:43
我很怀疑你在qt中发现了错误。该错误可能有许多原因,但重要的是,您有对已经释放的内存的引用。运行调试器,并尝试看看是什么导致了问题。使用gdb和val差制,希望您能够跟踪问题。
https://stackoverflow.com/questions/2197547
复制相似问题