gpt4 book ai didi

c++ - alloca () 可以替代 C++ 中的自动指针吗?

转载 作者:行者123 更新时间:2023-11-30 04:04:37 27 4
gpt4 key购买 nike

alloca () 用于从堆栈分配内存,堆栈在到达作用域末尾时自动释放。同时,C++ 中的自动指针确保堆中动态分配的内存在堆栈缠绕期间自动释放。

是否可以说 alloca() 提供了与自动指针类似的自动回收功能?

最佳答案

不,一点也不,那将是完全错误的。 C++ 中的智能指针(unique_ptrshared_ptr 和旧的和弃用的 auto_ptr)的目的是在自由存储上拥有内存分配,即用 new 分配的对象(尽管有一些灵 active )。特定于供应商的 alloca 在调用堆栈上分配内存(而不是对象),而不是在空闲存储上。

alloca 在标准中最接近的类似物是 C 的可变长度数组,但 C++ 甚至没有。即使那样,语义也不同,因为 C 和 C++ 中的名称是有范围的,但 alloca 的语义并未系统地绑定(bind)到范围(而是绑定(bind)到函数)。如果您愿意,可以将 alloca 视为提供“动态大小的局部变量”,但这种类比有很多缺陷。

关于c++ - alloca () 可以替代 C++ 中的自动指针吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23672114/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com