我坚持检查班级中矢量大小的问题。这是我的代码:
class myclass {
public:
std::vector<mystruct> v;
};
int main() {
myclass * a, *b;
std::cout << a->v.size() << '\n';
return 0;
}
此代码会出现分段错误。有人会解释这个片段中的错误是什么吗?我怎么能打败它?
答案 0 :(得分:7)
你还没有为指针分配任何内存;因此,您的程序行为未定义。
为什么不使用本地自动变量? myclass a, b;
就足够了。您还需要使用成员选择运算符->
替换成员运算符.
的指针。
答案 1 :(得分:4)
你想这样做:
int main() {
myclass a, b;
std::cout << a.v.size() << '\n';
return 0;
}
在您的代码中,您使用两个指向myclass
个对象的指针,但它们未初始化,因此当您通过箭头操作符取消引用a
时,您将调用undefined行为。