说我有一个数组arr [10],然后我将所有元素复制到另一个数组,arr2 [20]。我不再需要arr,所以我做arr = arr2来将它的指针移动到新的数组。 arr [10]使用的内存是否仍然使用,还是自动释放?如果它仍然在使用,那么在重新分配指针之前我有没有办法释放它?如何释放堆栈中间函数调用内存
0
A
回答
1
如果你声明了类似于int arr[10];
的arr,那么它将被存储在stack上,并且在函数结束时将被释放。你一般不能免费堆栈内存中功能。
如果您使用malloc()
定义它,那么它将在堆上,并且您必须使用free()
来释放它。否则,这将是一个内存泄漏,并在您的程序退出后被释放。但是,即使发生内存泄漏,由于virtual memory,您的计算机将始终能够检索该内存。
0
arr [10]使用的内存是否仍在使用,还是自动释放?
这取决于你如何实际声明你的数组。
- 如果将其声明为自动变量,则在函数调用结束时会自动释放它。
- 如果你做了一些动态分配,那么它将在函数调用结束后存在,你将不得不手动释放它。
相关问题
- 1. C++堆栈内存未被释放
- 2. 如何在ucontext *,linux中释放堆栈?
- 3. 如何在iPhone中释放presentModelViewController堆栈?
- 4. 何时在python中释放函数堆栈数据?
- 5. 函数调用,堆栈
- 6. 当线程堆栈使用的内存被释放时
- 7. 释放导航控制器堆栈中特定UIVIewController的内存
- 8. 在自定义堆栈分配器中释放内存
- 9. 函数调用期间的堆栈内容
- 10. 如何释放先前堆栈帧的存储器中的Javascript
- 11. 在递归函数中释放内存时发生堆损坏
- 12. 从调用堆栈中检索最顶级注释的函数
- 13. DebugDiag调用堆栈不显示调用堆栈中函数的行数
- 14. 活动历史记录 - 保留堆栈但释放内存
- 15. 离开堆栈时自动释放内存
- 16. 无法在其他线程的堆栈上释放内存
- 17. POSIX调用堆栈内存分配
- 18. 无法从函数中释放内存
- 19. 在函数中释放内存
- 20. 在JVM中,堆栈内存将占用什么内存空间?
- 21. 如何在GCC中不使用堆栈和函数调用?
- 22. 如何在线程强行终止后手动释放堆栈内存?
- 23. 如何释放内存空间?
- 24. 内存分配,堆栈和堆栈
- 25. 在堆栈内存中存储引用
- 26. 栈和堆内存
- 27. 如何让堆栈在函数调用中工作?
- 28. 如何在Windows函数调用中设置堆栈?
- 29. 如何获取函数在调用堆栈中的位置?
- 30. Android中的堆栈内存
您需要发布代码,因为您描述的内容是不可能的(即有arr [10],然后是arr = arr2)。 –
感谢吉姆,我现在意识到这一点。你知道我可以重新分配一个数组变量到另一个数组吗? – FLOWMEEN
通过使用*指针*。您可以将指针指定为'arr',然后根据您正在尝试执行的操作将其指向'arr2'。 –