断点似乎是由于堆损坏。
这是调用堆栈中两帧的快照:
第一的:
void QString::free(Data *d)
{
#ifdef QT3_SUPPORT
if (d->asciiCache) {
QMutexLocker locker(asciiCacheMutex());
Q_ASSERT(asciiCache);
asciiCache->remove(d);
}
#endif
qFree(d);//Breakpoint here, d = 0x08c9efd4
}
第二:
void qFree(void *ptr)
{
::free(ptr); //Breakpoint here, ptr = 0x00000000
}
让我感到困惑的是,指针0x08c9efd4
在传递给之前是,而在传递给时qFree
突然变成NULL
了qFree
。
什么可能导致指针突然变化?