2008-09-24 225 views
7

我一直在閱讀自定義內存池系統中使用的遺留代碼,然後我發現代碼使用_aligned_malloc。我想知道這個功能是什麼,我什麼時候需要使用它。什麼時候應該使用_aligned_malloc()?


謝謝大家。

我確實讀過MSDN,但我想要的是這樣的答案:「想要進行某種對齊的原因的一個例子是將數據與x86上的SSE指令集一起使用,其中數據必須對齊到多個16」 。

我終於明白那些代碼的含義了。再次感謝。

+1

另一個示例 - ARM處理器。它需要將所有數據對齊到4個字節。 – 2008-09-24 08:17:53

回答

0

您是否檢查過MSDN文檔? 你可以找到相應的條目 here

10

當您的內存分配對齊對您很重要時,此函數非常有用。 對齊意味着返回的指針的數值必須可以被一個特定的數字整除,即。 ((unsigned int)ptr)%對齊應該評估爲0.

想要進行某種對齊的原因的示例是將數據與x86上的SSE指令集一起使用,其中數據必須對齊到多個16 。

+0

或者你正試圖在PowerPC上存儲4個字節的長度(等) – 2008-09-24 06:39:53

5

以下是您可能涉及的用例。在我17年的C/C++開發中,我只有一次需要_aligned_malloc()(WinOS實現)和memalign(POSIX實現)內核函數,這是編碼低級磁盤I/O時的情況。原因是當不使用OS I/O緩衝區(例如在WinOS呼叫openfile()FILE_FLAG_NO_BUFFERING標誌)和讀/寫磁盤時,操作系統要求內存塊對齊到磁盤扇區大小;如果磁盤扇區大小爲512字節,並且您希望將1234字節寫入磁盤,則我會這樣做:

_aligned_malloc(1234, 512); 
相關問題