我只是想确保我在程序中正确释放内存......
我在一个函数(build_proc_table())中构建一个动态分配的2D数组,并将数组返回到调用函数的位置(main())。数组存储在main()中的变量中,我创建了一个“析构函数”函数来释放内存,但析构函数也在main()中调用,而不是最初在(在build_proc_table中)分配数组内存的地方())......
我没有得到任何错误或任何错误(编译时间或运行时间),程序的功能完全如我所愿,我只是想确保我没有造成内存泄漏。
答案 0 :(得分:2)
您手动分配的任何内存都有一个未绑定到其范围的生命周期。只要在某个地方分配的内存在以后的某个地方被释放,你就没事了。它的来源无关紧要。
答案 1 :(得分:2)
在不知道您使用哪种语言的情况下,细节很难。但是,只要您不更改分配和释放之间的引用,则释放内存的位置无关紧要。但是,如果更改分配和取消分配之间正在寻址的内存地址(在更改之前不进行解除分配),则会发生内存泄漏。
在C ++中,例如......
int main(){
int* j = new int[10];
j = new int[10];
delete j;
}
这将是内存泄漏,因为第一个数组未被删除。这显然是一维的简化示例,而不是使用函数。