2016-09-24 81 views
0

我是新來的malloc和對齊malloc。我知道如何使用它們。但是,我不知道在哪種情況下我們應該使用一致的malloc而不是標準的malloc。你能給我解釋一下嗎?謝謝你們。對齊malloc和標準malloc不同嗎?

+0

語言?我假設C,但你也應該提供其他環境細節(操作系統,語言實現等)。標準C只有'malloc',保證所有標準數據類型都能正確對齊。 – paxdiablo

+0

我在Ubuntu中使用C11標準 – blackcafe

+0

將這些標籤添加爲標籤,請根據需要進行確認和/或更改。 – paxdiablo

回答

1

glibc documentation使得它相當清楚,你應該使用aligned_alloc

通過mallocrealloc在GNU系統返回塊的地址總是八(或十六對64位系統)的倍數。如果您需要一個地址爲2的倍數的塊,請使用aligned_allocposix_memalign

C標準已確保了malloc會返回一個適當對齊的內存塊的任何標準類型的,但有可能是在你想要或需要更嚴格對齊的情況。作爲一個例子,我似乎回想起SSE2(SIMD)指令需要它們的數據在16字節的邊界上對齊,所以你可以使用aligned_alloc來給你,即使在malloc只保證對齊到8字節邊界的系統上。