void* align(size_t alignment, size_t size, void*& ptr, size_t& space)
給定一個指針
ptr
到緩衝器[...]返回由指定的對齊排列的指針[...]。函數修改指針[...]
如果align
成功,那麼返回的指針和ptr
是相同的。
This SO answer節目傳遞,留下空間指針align
,原來的指針存儲到超大塊,最後調用刪除對原指針偏移地址。那是必要的,或者是它的安全簡單地做到這一點:
size_t space = 64;
void* ptr = malloc(space);
void* ret = std::align(alignment, targetSize, ptr, space);
if (ret == nullptr) { /* failed to align */ }
free(ptr);
請注意,在C++中沒有使用malloc;使用:: operator new而不是malloc。 –
@TheTechel我與一個需要使用malloc進行分配的C庫進行交互,否則是。 – ZachB