标题:请教关于QT中New BYTE内存释放的问题
作者:masuz
日期:2016-09-18 12:25
内容:
我通过 new BYTE的方式创建了struct指针,然后把它们加入QList,当整个对象释放的时候,再遍历QList逐一delete指针,但是每次释放到第2个指针对象时均报以下错误:
HEAP: Invalid address specified to RtlValidateHeap( 000000FD6A3E0000, 000000FD7367C330 )
代码如下:
// XObject.h
typedef struct _MEM_INFO
{
DWORD Index;
UINT Type;
char Info[INFO_SIZE+1];
...
} MEM_INFO, *P_MEM_INFO;
typeof struct _STRUCT_TEST
{
P_MEM_INFO pMemInfo;
...
}STRUCT_TEST;
...
class XObject //XObject 不是继承自 QObject!
{
private:
QList testList;
...
};
// XObject.cpp
void XObject::Create()
{
for(int i=0;ipMemInfo; // i == 1 时出错:HEAP[xxx.exe]: Invalid address specified to RtlValidateHeap( 000000FD6A3E0000, 000000FD7367C330 )
pTest->pMemInfo = NULL;
}
}
}
请问上述情况该如何处理?是不是 ..
#1 [dbzhang800 09-18 13:30]
你用new [] 申请的数组,必须要用 delete [] 来删除相应的数组
#2 回 dbzhang800 的帖子 [masuz 09-18 13:43]
dbzhang800:你用new [] 申请的数组,必须要用 delete [] 来删除相应的数组 (2016-09-18 13:30)
好的,我试试。
#3 回 masuz 的帖子 [masuz 09-18 14:21]
masuz:好的,我试试。 (2016-09-18 13:43)
你好!我试了用 delete[] 还是一样的出错。估计不是这个问题...
#4 回 dbzhang800 的帖子 [masuz 09-18 14:22]
dbzhang800:你用new [] 申请的数组,必须要用 delete [] 来删除相应的数组 (2016-09-18 13:30)
你好!我试了用 delete[] 还是一样的出错。估计不是这个问题...
#5 [flfw1314 09-24 12:46]
test.pMemInfo = pInfo; 这段改下:for(int iDex=0;iDexpMemInfo。这样试试