内存释放不完全正常(节点)

时间:2016-05-20 07:22:46

标签: c++

我已经尝试创建一段代码来理解内存解除分配是如何工作的,我已经明白,对于我使用的每个新运算符,我需要删除它,我所做的代码片段似乎是这样做的,但在查看任务管理器后,我运行代码后,最初需要344Kb,在创建节点35.3mb后,删除它们后将下降到3044Kb(3Mb),但不是初始内存使用量为344Kb,我是不知道为什么。

#include <iostream>
using namespace std;
class Node{
public:
int value;
Node *next;
Node(int value){
    this->value = value;
    next = NULL;
}
};
int main(){
system("pause");
Node *head = new Node(999999);
Node *prev = head;
for (int i = 0; i < 500000; i++){
    Node *newNode = new Node(i);
    prev->next = newNode;
    prev = newNode;
}

while (head != NULL){
    Node *toDelete = head;
    head = head->next;
    delete toDelete;
}
system("pause");
return 0;
}

2 个答案:

答案 0 :(得分:6)

操作系统的内存统计信息只是您正在调查的内容的粗略指标。你最好使用和理解像valgrind中那样的内存泄漏检测器。

答案 1 :(得分:0)

任务管理器没有显示程序消耗的确切内存,操作系统根据程序请求预留内存(不是程序直接分配它),共享库也可以为内存使用做出贡献