use*_*085 -2 c memory function
所以我想知道函数中使用的内存会发生什么。我正在编写一个多线程程序,我想知道如果我只是在返回后调用函数及其内存会发生什么。
“自动”存储——你直接声明而不是从堆中显式分配的变量——是从堆栈中获得的,并且在函数退出时基本上消失了。
任何你明确的malloc()必须最终将明确免费()d,一次且仅一次。您有责任构建代码以使其正确发生。如果您不打算在函数退出后使用它,则应在函数退出之前将其释放。如果它是更大数据结构的一部分,或者被返回给调用者,你需要设计你的程序来意识到这一点,并在不再需要该内存块时自行清理。
如果你分配,你必须释放——或者必须清楚地记录谁负责在完成内存后释放内存。
(请注意,这与 Java 和其他“垃圾收集”语言非常不同,后者在没有人主动使用内存时会自动恢复内存。)
| 归档时间: |
|
| 查看次数: |
78 次 |
| 最近记录: |