【发布时间】:2013-12-23 17:58:56
【问题描述】:
有一条规则告诉local variables在调用函数结束后被删除。
我尝试调用函数(在 C++ 中)
void DoIt()
{
double x[100000];
}
并调查了在创建数组x时程序分配的内存增加了一些KBytes。但是,在调用函数结束后,内存不会减少。函数delete 也会产生运行时错误。
那么,为什么程序分配的内存在结束调用函数后没有减少呢?有没有办法像上面那样删除局部变量?
【问题讨论】:
-
你是如何测量内存使用的?
-
您的测量可能有缺陷。
x在堆栈上分配。您不会(也不能使用您显示的代码)调用 delete 。 -
在任务管理器->进程中
-
尝试使用 new 分配内存。那么使用删除应该没问题。
-
您需要了解虚拟内存和物理内存之间的区别。任务管理器很可能会向您展示(众多衡量标准之一)物理内存消耗。在不了解虚拟内存的情况下,我可以给您的唯一答案是没有内存泄漏,您可以放心,堆栈分配会像宣传的那样工作。
标签: c++ memory-management