0
我是新來的malloc和對齊malloc。我知道如何使用它們。但是,我不知道在哪種情況下我們應該使用一致的malloc而不是標準的malloc。你能給我解釋一下嗎?謝謝你們。對齊malloc和標準malloc不同嗎?
我是新來的malloc和對齊malloc。我知道如何使用它們。但是,我不知道在哪種情況下我們應該使用一致的malloc而不是標準的malloc。你能給我解釋一下嗎?謝謝你們。對齊malloc和標準malloc不同嗎?
的glibc
documentation使得它相當清楚,你應該使用aligned_alloc
:
通過
malloc
或realloc
在GNU系統返回塊的地址總是八(或十六對64位系統)的倍數。如果您需要一個地址爲2的倍數的塊,請使用aligned_alloc
或posix_memalign
。
C標準已確保了malloc
會返回一個適當對齊的內存塊的任何標準類型的,但有可能是在你想要或需要更嚴格對齊的情況。作爲一個例子,我似乎回想起SSE2(SIMD)指令需要它們的數據在16字節的邊界上對齊,所以你可以使用aligned_alloc
來給你,即使在malloc
只保證對齊到8字節邊界的系統上。
語言?我假設C,但你也應該提供其他環境細節(操作系統,語言實現等)。標準C只有'malloc',保證所有標準數據類型都能正確對齊。 – paxdiablo
我在Ubuntu中使用C11標準 – blackcafe
將這些標籤添加爲標籤,請根據需要進行確認和/或更改。 – paxdiablo