你可以通过定义你自己的分配器来分配一个std :: vector来分配对齐的堆内存。 您可以使用declspec对齐在堆栈上分配c样式阵列。 但是你可以声明一个tr1 :: array来保证索引为零的元素将被对齐吗?如何使tr1 :: array分配对齐的内存?
4
A
回答
7
tr1::array
(和std::array
和boost::array
)都是POD,因此内容占用的内存与array
的内存一致。因此,请分配array
,然后根据您的需要构建new
。
typedef std::tr1::array< MyClass, ary_sz > AryT;
void *array_storage = aligned_allocation(sizeof(AryT));
AryT *ary = new(array_storage) AryT(initial_value);
+0
你能举个例子吗? – 2010-08-25 10:29:21
+0
@zr:不早说完成;) – Potatoswatter 2010-08-25 10:30:22
+0
@PS:非常感谢您及时准确的答复。 – 2010-08-25 10:37:57
相关问题
- 1. 如何分配4K对齐的内存
- 2. 让std :: vector分配对齐的内存
- 3. boost :: shared_array和对齐的内存分配
- 4. Java的内存分配对齐
- 5. 什么是对齐的内存分配?
- 6. Win32内存分配与大对齐
- 7. 分配32字节对齐内存的分配器
- 8. 如何用16字节对齐分配内存?
- 9. 缓存对齐英特尔CPU上的内存分配
- 10. 如何使内存对齐类的派生类失去对齐
- 11. C++:给tr1 :: function对象分配函数
- 12. 在C和C++中如何分配和释放* array *内存?
- 13. 对象的内存分配
- 14. 非齐次数组的内存分配是如何工作的?
- 15. 在堆上分配的内存块是否保证了对齐?
- 16. SSE2 - 16字节对齐的内存动态分配
- 17. JavaScript Array未对齐
- 18. 如何对齐Objective C中的内存?
- 19. 如何从堆中为InterlockedIncrement函数分配正确的内存对齐方式?
- 20. 对象内存分配
- 21. 对齐不包括对齐分配
- 22. 堆栈内存分配和对齐问题
- 23. 预取对齐的内存
- 24. 类的内存对齐
- 25. NSMutableData如何分配内存?
- 26. javascript如何分配内存?
- 27. 内存对齐与页面对齐
- 28. 虚拟内存和对齐 - 它们如何分解?
- 29. Resharper多行分配对齐
- 30. 使用属性对齐时的内存对齐(1)
如何对齐你需要的内存是什么?实现通常确保所有对象都对齐。例外是“特殊”类型,如需要128位对齐的SSE向量。 – jalf 2010-08-25 11:42:24
是:新保证返回的内存将被正确对齐(只要所请求的内存足够大以容纳该对象)。所以vector/Array和任何动态分配的内存都会保证与你的对象对齐(只要分配的内存大小等于或大于你的对象)。 – 2010-08-25 19:54:44