你可以通過定義你自己的分配器來分配一個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