【发布时间】:2011-05-04 05:02:01
【问题描述】:
我有两个问题:
1) 是否可以实现一个使用 alloca 在堆栈上分配内存并且符合 C++ STL 的分配器?
如果那里有代码,您只需将我指向 URL 即可让我开心。 :-) 如果没有代码,也许你可以画出函数分配和释放?
2) 如果上述问题的答案是“是”,我想了解如何在堆栈上为类成员分配内存。例如,考虑一个
std::vector<int, AllocaAllocator<int> >
并假设调用此向量的成员函数“resize”首先调用分配器的“deallocate”,然后调用“allocate”。
调用 allocate 的范围是成员函数 resize 的范围。这是否意味着在该函数调用结束时将分配的内存从堆栈中删除?
亲切的问候, 比约恩
【问题讨论】:
-
你不能通过alloca释放你在堆栈上分配的空间。获取 alloca 分配的内存的唯一方法是退出函数。
-
这是否意味着,如果您退出一个函数,那么所有通过 alloca 在堆栈上分配在该函数内的内存都会被释放?这是否意味着不可能使用 alloca 为类成员分配内存?那么,是不是就不可能写出使用alloca的分配器呢?
-
请看一下这个问题:“寻找 C++ STL-like vector class but using stack storage”(stackoverflow.com/q/354442) 已经有一些关于该主题的有价值的 cmets。
-
真正的问题是你为什么要这样做?
标签: c++ stl stack allocator alloca