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