【发布时间】:2014-07-03 12:56:29
【问题描述】:
alloca () 用于从堆栈分配内存,堆栈在到达作用域末尾时自动释放。同时,C++ 中的自动指针确保在堆栈缠绕期间自动释放堆中动态分配的内存。
说 alloca() 提供了与自动指针提供的类似的自动回收功能是否正确?
【问题讨论】:
-
你的前提是错误的。
alloca分配的内存在周围的函数结束时被释放。 -
alloca不可移植,它既不是 C、POSIX 也不是任何其他标准的一部分,它依赖于编译器。应避免使用它。当然,即使在函数结束时“自动”地未分配内存,它也不会(就像malloc)在分配/释放时调用任何构造函数或析构函数。
标签: c++ stack dynamic-memory-allocation