簡體   English   中英

與STL向量對齊分配

[英]Aligned allocation with STL vector

我希望我的向量存儲對齊(比如16字節邊界),所以我把這個分配器作為memalign()的包裝器,我想知道這是否是分配與STL向量一起使用的對齊內存的正確方法。

template <class T , int Alignment=16>
class AlignedAllocator
{
public:
...

    pointer allocate (size_type size, const_pointer *hint = 0) {
        return (pointer) memalign(Alignment, size*sizeof (T));
    };

    void deallocate (pointer p, size_type size) {
        free(p);
    };
...
}

如果沒有,是否有任何可用於STL容器的對齊分配器的實現?

PS:我正在用gcc編譯。

函數memalign(3)已經過時,請嘗試使用posix_memalign(3) 除此之外,假設代碼中的...意味着包含剩余的所需分配器元素,您的代碼看起來很好。

看起來不錯。 但是將這些代碼移植到BSD和Darwin時會出現問題。 手動編寫分配函數要強大得多。

只是新的足夠大的塊並返回指定的指針。 您還需要編寫自定義釋放功能

這取決於向量實現,它可能選擇分配稍大一點的緩沖區,並在數據前面添加一些會破壞對齊的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM