[英]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.