簡體   English   中英

為指向結構向量的指針分配內存

[英]Allocate memory for a pointer to vector of structs

我有一個結構 PWS:

struct PWS{
    uint64_t key;
    char* value;
    uint64_t timestamp;
    uint64_t txn_id;
};

我想創建一個指向 PWS 向量的指針,以便稍后在我的代碼中填充它。 這種方式正確嗎?

int total_no_of_items = 100000;
vector<PWS> * pws = (vector<PWS>*) _mm_malloc(sizeof(vector<PWS>*) * total_no_of_items, 0);

不幸的是,這是不正確的。 您正在為vector<PWS>分配 100000 個未初始化的指針,而不是結構向量。 如果你想分配一個結構向量,就像這樣簡單:

vector<PWS> pws(total_no_of_items);

如果您希望向量本身是堆分配的(出於任何奇怪的原因),那么這將是:

unique_ptr<vector<PWS>> pws(new vector<PWS>(total_no_of_items));

此外還不清楚您為什么要嘗試使用_mm_malloc 如果您的目標是使用一些 SIMD 指令加載結構,那么您應該在結構上指定對齊方式:

struct alignas(16) PWS { ... }; // aligned for xmm

std::vector的分配器將負責其余的工作。

暫無
暫無

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

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