Memory 内存释放问题

Memory 内存释放问题,memory,memory-leaks,memory-management,Memory,Memory Leaks,Memory Management,我只是想确保我在程序中正确地释放内存 我在一个函数(build_proc_table())中构建了一个动态分配的2D数组,并将数组返回到调用该函数的位置(main())。数组存储在main()中的一个变量中,我创建了一个“析构函数”函数来释放内存,但析构函数也在main()中调用,而不是在数组的内存最初分配的位置(in build_proc_table()) 我没有收到任何错误或任何东西(编译时或运行时),并且程序的功能完全符合我的要求,我只是想确保我没有造成内存泄漏。任何手动分配的内存都有一个

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

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


我没有收到任何错误或任何东西(编译时或运行时),并且程序的功能完全符合我的要求,我只是想确保我没有造成内存泄漏。

任何手动分配的内存都有一个不受其作用域限制的生存期。只要分配给某个地方的内存稍后被释放到其他地方,您就可以了。从何处调用并不重要。

任何手动分配的内存都有一个不受其作用域约束的生存期。只要分配给某个地方的内存稍后被释放到其他地方,您就可以了。无论从何处调用它都无关紧要。

如果不知道您使用的是哪种语言,则很难具体说明。但是,只要不更改分配和释放之间的引用,内存释放到哪里并不重要。但是,如果在分配和解除分配之间更改要寻址的内存地址(在更改之前没有解除分配),则会出现内存泄漏

在C++中,例如……/P>
int main(){
  int* j = new int[10];
  j = new int[10];
  delete j;
}

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

不知道您使用的是哪种语言,很难进行详细说明。但是,只要不更改分配和释放之间的引用,内存释放到哪里并不重要。但是,如果在分配和解除分配之间更改要寻址的内存地址(在更改之前没有解除分配),则会出现内存泄漏

在C++中,例如……/P>
int main(){
  int* j = new int[10];
  j = new int[10];
  delete j;
}

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

这适用于所有语言吗?我使用C++ BTW.@亚伦:我不知道宇宙中的每种语言,但它确实是C++的(以及其他我知道的手动内存管理语言)。这对所有语言都适用吗?我使用C++ BTW.@亚伦:我不知道宇宙中的每种语言,但它确实是C++的(以及其他所有我都知道的手动内存管理语言)。