gpt4 book ai didi

c++ - 从数组中释放内存

转载 作者:行者123 更新时间:2023-11-28 00:50:46 25 4
gpt4 key购买 nike

我正在试验内存分配和删除,并且对如何正确删除/释放内存有疑问。下面是一小段有效的代码:

#include <windows.h>
#include <vector>
#include <iostream>

using namespace std;

int main() {
cout << "Initial" << endl;
system("Pause");

double* Array = new double[50000];
for(int i = 0; i < 50000; i++)
{
Array[i] = rand();
}

cout << "Array created" << endl;
system("Pause");

delete[] Array;

cout << "Array deleted" << endl;
system("Pause");

return 1;
}

在每次系统暂停期间,我使用 Windows 任务管理器来检查我的应用程序使用了多少内存。以下是我的结果中的数字:

  • 初始 744 KB
  • 阵列创建 1120 KB
  • 数组已删除 1124 KB

那么我是否错过了 C++ 教育中的某些内容?调用delete[]后是否应该为数组分配的内存不被释放?

最佳答案

不,你没有错过任何东西。只是任务管理器没有告诉您全部真相(好吧,它没有从您需要的角度告诉您真相)。当程序调用 delete[] 时,内存会被释放供程序重用,但不会返回给操作系统。从您的程序的角度来看,内存已释放:您下一次调用 new 将占用相同的内存块。但是从操作系统(和任务管理器)的角度来看,该程序仍然保留在内存中。

要查看发生了什么,请多次运行您的分配和释放循环,并查看任务管理器中的内存总量没有从您在第一次之后获得的“高水位线”上升分配。

关于c++ - 从数组中释放内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14189759/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com