[英]Segmentation fault when inserting in a map
我想在地圖中添加一個新條目,但是我收到一個分段錯誤消息。
class A {
};
class B {
public:
std::map<int, std::vector<A*> > m;
};
int main() {
A *a = (A*)malloc(sizeof(A));
B *b = (B*)malloc(sizeof(B));
b->m[0].push_back(a);
return 0;
}
我在執行b-> m [0] .push_back(a)時遇到錯誤。
切勿在C ++中使用malloc
,而應始終使用new
。
因為您正在使用malloc
所以構造函數永遠不會被調用,因此您的m
處於未定義狀態。 訪問時顯示未定義的行為。
而且, m
存儲指向A
指針,這意味着使用[]
訪問時,默認構造的元素為nullptr
,甚至更多的UB。
也就是說,實際上從不使用raw new
而僅使用基於范圍的自動生存期或std::unique_ptr
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.