std::aligned_alloc


 

定義於頭文件 <cstdlib> (c++)

void * aligned_alloc ( std::size_t alignment, std::size_t size); (c++17) 

分配 size 字節的未初始化存儲, 由alignment指定其對齊。 size 參數必須是alignment 的整數倍。

 

參數: 

  alignment - 指定對, 必須是實現支持的合法對齊。

  size - 分配的字節數, alignment的整數倍。

返回值:

  成功時,返回指向新分配內存起始的指針。為了避免內存泄露,返回的指針必須由std::free或std::realloc 解分配。

  失敗時,返回空指針。

注意:

  傳遞不是alignment 的整數倍的size 或不受實現支持或非法alignment 導致函數失敗並返回空指針。

  作為實現支持 要求的例子,POSIX函數posix_memalign 接受任何是2的冪且為sizeof(void*) 倍數的alignment, 而基於POSIX的alignmed_alloc 實現繼承此要求。

  常規的std::malloc 分配適用於任何對象的大小的內存,此函數適用於對齊分配,例如對SSE, 緩存線或VM頁邊界。

#include <cstdio>

#include <cstdlib>

int main() {

  int * p1 = static_cast < int* > ( std::malloc ( 10 * sizeof *p1 ) );

  std::printf ( "default-aligned address: %p \n", static_cast < void* > ( p1) );

  std::free ( p1 );

  int * p2 = static_cast < int* > ( std::aligned_alloc ( 1024, 10 * sizeof *p2 ) );

  std::prinf ( "1024-byte aligned address : %p \n", static_cast <void*> ( p2 ) );

  std::free( p2 );

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM