繁体   English   中英

结构内部的向量,如果struct的对象是动态创建的,则我们不能将向量中的元素推入

[英]vector inside a structure if the object of struct is dynamically created then we cannot push elements in the vector

struct node
{
    vector<int> v;
};  
//case 1:

struct node *t = (struct node *) malloc(sizeof(struct node));  

t->v.push_back(4);// segmentation fault

//case 2:
struct node t;
t.v.push_back(6);

我知道第一种情况下分段错误的原因是我们动态分配了内存。 那么我们正在尝试使用未分配的内存。 在第二种情况下,我们使用堆栈存储器。 你能更清楚地解释吗? 不好意思问我,我是新手

使用new而不是malloc

该结构的默认构造函数不叫当使用malloc ,则vector未初始化。

作为载体是具有一类非平凡的构造 ,所以结构有一个不平凡的构造函数,它不能被忽略。

请记住使用,以避免内存泄漏后删除指针。

马特说的。

不仅不初始化向量,而且malloc还没有将结构占用的内存区域设置为任何值。 您甚至无法指望将其清除为零,这将是该内存区域的先前用户所处的位置。

 struct node *t( new struct node );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM