【发布时间】:2010-10-18 14:29:23
【问题描述】:
我正在使用 DevStudio 在 Windows 上以非托管的 C/C++ 进行开发。
我想在堆栈而不是堆上分配一些内存,因为我不想手动释放该内存(我知道智能指针和所有这些事情。我有一个非常具体的内存案例我需要处理的分配),类似于使用 A2W() 和 W2A() 宏。
_alloca 会这样做,但已被弃用。建议改用 malloca。但是 _malloca 文档说每次调用 _malloca 都必须调用 ___freea。然后它破坏了我使用 _malloca 的目的,我将使用 malloc 或 new。
任何人都知道我是否可以不调用 _freea 而不泄漏以及内部影响是什么?
否则,我最终将只使用已弃用的 _alloca 函数。
【问题讨论】:
-
请注意,_alloca 的弃用不是基于“将在未来版本的 CRT 中删除”,而是因为“存在更安全的替代品”。与旨在提供过渡期的弃用不同,此类弃用用于提高对可能问题的认识的特定目的。我会说,如果您知道大小不会很大,只需使用 _alloca。
标签: windows stack memory-management