你可以通过定义你自己的分配器来分配一个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. boost :: shared_array和对齐的内存分配
- 2. Java的内存分配对齐
- 3. 什么是对齐的内存分配?
- 4. Win32内存分配与大对齐
- 5. 分配32字节对齐内存的分配器
- 6. 缓存对齐英特尔CPU上的内存分配
- 7. C++:给tr1 :: function对象分配函数
- 8. 在C和C++中如何分配和释放* array *内存?
- 9. 非齐次数组的内存分配是如何工作的?
- 10. SSE2 - 16字节对齐的内存动态分配
- 11. JavaScript Array未对齐
- 12. 如何从堆中为InterlockedIncrement函数分配正确的内存对齐方式?
- 13. 堆栈内存分配和对齐问题
- 14. 类的内存对齐
- 15. NSMutableData如何分配内存?
- 16. 虚拟内存和对齐 - 它们如何分解?
- 17. 使用属性对齐时的内存对齐(1)
- 18. 内存分配器的“杀手对手”?
- 19. C++ STL对象的内存分配
- 20. C - 内存对齐argv?
- 21. 内存分配
- 22. 内存分配
- 23. 检查对象的内存分配
- 24. 内存分配
- 25. 内存分配
- 26. 类对象的内存分配
- 27. 内存对齐在C
- 28. 内存地址对齐
- 29. 内存对齐错误2013
- 30. 内存分配
如何对齐你需要的内存是什么?实现通常确保所有对象都对齐。例外是“特殊”类型,如需要128位对齐的SSE向量。 – jalf 2010-08-25 11:42:24
是:新保证返回的内存将被正确对齐(只要所请求的内存足够大以容纳该对象)。所以vector/Array和任何动态分配的内存都会保证与你的对象对齐(只要分配的内存大小等于或大于你的对象)。 – 2010-08-25 19:54:44