我一直在閱讀自定義內存池系統中使用的遺留代碼,然後我發現代碼使用_aligned_malloc。我想知道這個功能是什麼,我什麼時候需要使用它。什麼時候應該使用_aligned_malloc()?
謝謝大家。
我確實讀過MSDN,但我想要的是這樣的答案:「想要進行某種對齊的原因的一個例子是將數據與x86上的SSE指令集一起使用,其中數據必須對齊到多個16」 。
我終於明白那些代碼的含義了。再次感謝。
我一直在閱讀自定義內存池系統中使用的遺留代碼,然後我發現代碼使用_aligned_malloc。我想知道這個功能是什麼,我什麼時候需要使用它。什麼時候應該使用_aligned_malloc()?
謝謝大家。
我確實讀過MSDN,但我想要的是這樣的答案:「想要進行某種對齊的原因的一個例子是將數據與x86上的SSE指令集一起使用,其中數據必須對齊到多個16」 。
我終於明白那些代碼的含義了。再次感謝。
您是否檢查過MSDN文檔? 你可以找到相應的條目 here。
當您的內存分配對齊對您很重要時,此函數非常有用。 對齊意味着返回的指針的數值必須可以被一個特定的數字整除,即。 ((unsigned int)ptr)%對齊應該評估爲0.
想要進行某種對齊的原因的示例是將數據與x86上的SSE指令集一起使用,其中數據必須對齊到多個16 。
或者你正試圖在PowerPC上存儲4個字節的長度(等) – 2008-09-24 06:39:53
以下是您可能涉及的用例。在我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);
另一個示例 - ARM處理器。它需要將所有數據對齊到4個字節。 – 2008-09-24 08:17:53