我的结构如下:
struct Vertex{ listq; };
我创建了一个大小为10的数组,如下所示:
Vertex *ver = (Vertex*) malloc(10 * sizeof(Vertex));
现在我想在列表中插入.我很难搞清楚为什么会出现分段错误:
ver[1].q.push_back(10);
有人可以解释这里有什么问题吗?
malloc
只是分配内存,它不会在该内存中构造任何对象.
你可以尝试
Vertex* ver = new Vertex[10];
它会初始化Vertex
结构及其list
成员.
创建10个Vertex
对象的更简单方法是
std::vectorver(10);
这也使您免于delete[]
以后使用对象的麻烦.