gpt4 book ai didi

c++ - vector inside a structure 如果struct的对象是动态创建的,那么我们不能将元素压入vector

转载 作者:搜寻专家 更新时间:2023-10-31 01:02:18 25 4
gpt4 key购买 nike

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时没有调用struct的默认构造函数,因此vector没有被初始化。

因为 vector 是一个具有 non-trivial constructor 的类, 所以这个结构有一个非平凡的构造函数,它不能被忽略。

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

关于c++ - vector inside a structure 如果struct的对象是动态创建的,那么我们不能将元素压入vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27506461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com