我只想确保我在程序中正确地释放了内存...
我在一个函数( build_proc_table() )中构建了一个动态分配的2D数组,并将该数组返回到调用该函数的位置( main() )。数组存储在main()中的一个变量中,我创建了一个“析构函数”来释放内存,但析构函数也是在main()中调用的,而不是数组的内存最初分配到的位置(在build_proc_table()中)...
我没有得到任何错误或任何东西(编译时或运行时),程序完全按照我不想要的方式运行,我只想确保不会导致内存泄漏。
发布于 2011-06-11 07:57:33
您手动分配的任何内存的生存期都不受其作用域的限制。只要分配到某个地方的内存稍后被释放到另一个地方,您就不会有问题。从哪里调用它并不重要。
发布于 2011-06-11 08:04:55
如果不知道您使用的是哪种语言,则很难详细说明。但是,只要您没有在分配和释放之间更改引用,那么在哪里释放内存并不重要。但是,如果您在分配和释放之间更改正在寻址的内存地址(而不是在更改之前释放),则会发生内存泄漏。
例如,在C++中...
int main(){
int* j = new int[10];
j = new int[10];
delete j;
}这将是一个内存泄漏,因为第一个数组没有被删除。这显然是一个简化的例子,是一维的,不使用函数。
https://stackoverflow.com/questions/6313119
复制相似问题