刚学C ++,并试图了解指针,新的,正确删除。 关于我的问题:我创建了一些指向一个结构,并在年底我将它们删除。 但堆的大小不会降低。 我搜索了一些答案,发现以下问题。 c + +删除不释放所有内存(Windows)中 。 在回答代码似乎正确释放堆。
我的傻学习的代码:
#include <iostream>
using namespace std;
struct daten
{
int iVal;
daten *next;
daten *prev;
};
int main()
{
daten *first=nullptr;
daten *prev=nullptr;
daten *entry=nullptr;
daten *last=nullptr;
cout << "[Any Key] FILL";
getchar();
//fill
for( int i=0;i<100000;i++)
{
if(!entry)
{
entry=new daten;
entry->iVal=i;
entry->next=nullptr;
entry->prev=nullptr;
first=entry;
prev=entry;
last=entry;
}
else
{
entry=new daten;
entry->iVal=i;
entry->next=nullptr;
entry->prev=prev;
prev->next=entry;
prev=entry;
last=entry;
}
}
cout << "[Any Key] DELETE";
getchar();
//delete
prev=last;
while(prev)
{
last=prev;
prev=prev->prev;
delete last;
last=nullptr;
}
cout << "[Any Key] END";
getchar();
}
我有一个更复杂的代码,我可以插入/删除/导航作为一个链表和公正,以确保我创建这些条目10万,但删除后,堆不降低。 所以,可以请你告诉我,是我的错?