链表合理释放,却依然内存泄漏,不解.
想利用链表保存自定义类的对象;
下面是我写的测试伪代码;
class A // 自定义类 A
{
......;
}
struct list // 链表结构
{
A* a; // 链表中的数据,自定义类的对象指针
list* next; // 下一个节点的指针
}
main()
{
list* list = new list (); // 这里先申请个list作为链表的头
list* pTest = list,*pT; // 用来遍历的指针
// 然后申请空间
for(int k = 0;k < 1000000;k++) // 多申请些,申请个长长的链表 ******** 这里断点监视了内存******
{
pTest -> next = new list (); // 只申请后继节点,对链表中的数据先不考虑。
pTest = pTest -> next;
}
// 然后全部释放
pTest = list; // 将指针指向链表头,准备释放
for(int k = 0;k < 1000000;k++) // 开始释放,和原来的长度一样 ******** 这里断点监视了内存******
{
*pT = pTest->next; // 保存后继节点的地址。
delete pTest;
pTest = pT; // 将指针指向后继节点。
}
******** 这里断点监视了内存******
}
// 代码大概就是这样,按道理来说申请了1000000的长度,又释放了1000000个节点(还是1000001个),内存不应该有泄漏啊。
但是,随着K的值增加,内存泄漏也明显的增加。
不明白原因,请高手指点。
******************************************
我起初认为,是不是由于结构体内存对齐方面的原因。申请的时候每个节点的空间大了,但是释放的时候按照应有的空间释放了呢?