似乎断点是由于堆损坏造成的 这是来自调用堆栈的两个帧的快照:
第一:
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
。
什么可能导致指针突然改变?