内存释放问题

时间:2011-06-10 23:53:27

标签: memory memory-leaks memory-management

我只是想确保我在程序中正确释放内存......

我在一个函数(build_proc_table())中构建一个动态分配的2D数组,并将数组返回到调用函数的位置(main())。数组存储在main()中的变量中,我创建了一个“析构函数”函数来释放内存,但析构函数也在main()中调用,而不是最初在(在build_proc_table中)分配数组内存的地方())......

我没有得到任何错误或任何错误(编译时间或运行时间),程序的功能完全如我所愿,我只是想确保我没有造成内存泄漏。

2 个答案:

答案 0 :(得分:2)

您手动分配的任何内存都有一个未绑定到其范围的生命周期。只要在某个地方分配的内存在以后的某个地方被释放,你就没事了。它的来源无关紧要。

答案 1 :(得分:2)

在不知道您使用哪种语言的情况下,细节很难。但是,只要您不更改分配和释放之间的引用,则释放内存的位置无关紧要。但是,如果更改分配和取消分配之间正在寻址的内存地址(在更改之前不进行解除分配),则会发生内存泄漏。

在C ++中,例如......

int main(){
  int* j = new int[10];
  j = new int[10];
  delete j;
}

这将是内存泄漏,因为第一个数组未被删除。这显然是一维的简化示例,而不是使用函数。