2016-02-07 30 views
0

说我有一个数组arr [10],然后我将所有元素复制到另一个数组,arr2 [20]。我不再需要arr,所以我做arr = arr2来将它的指针移动到新的数组。 arr [10]使用的内存是否仍然使用,还是自动释放?如果它仍然在使用,那么在重新分配指针之前我有没有办法释放它?如何释放堆栈中间函数调用内存

+0

您需要发布代码,因为您描述的内容是不可能的(即有arr [10],然后是arr = arr2)。 –

+0

感谢吉姆,我现在意识到这一点。你知道我可以重新分配一个数组变量到另一个数组吗? – FLOWMEEN

+0

通过使用*指针*。您可以将指针指定为'arr',然后根据您正在尝试执行的操作将其指向'arr2'。 –

回答

1

如果你声明了类似于int arr[10];的arr,那么它将被存储在stack上,并且在函数结束时将被释放。你一般不能免费堆栈内存中功能。

如果您使用malloc()定义它,那么它将在堆上,并且您必须使用free()来释放它。否则,这将是一个内存泄漏,并在您的程序退出后被释放。但是,即使发生内存泄漏,由于virtual memory,您的计算机将始终能够检索该内存。

0

arr [10]使用的内存是否仍在使用,还是自动释放?

这取决于你如何实际声明你的数组。

  • 如果将其声明为自动变量,则在函数调用结束时会自动释放它。
  • 如果你做了一些动态分配,那么它将在函数调用结束后存在,你将不得不手动释放它。