编译器使用bazel,mac系统下。
程序1:
vector <string> test() {
cout << "test" << endl;
}
int main() {
test();
cout << "finished test" << endl;
}
运行时崩溃,输出内容:
test
Segmentation fault: 11
将vector换成stl的其他容器 pair,map 也崩溃。
程序2:
class A {
vector<string> s;
};
A test() {
cout << "test" << endl;
}
int main() {
test();
cout << "finished test" << endl;
}
运行时崩溃。
程序3:
class A {
};
A test() {
cout << "test" << endl;
}
int main() {
test();
cout << "finished test" << endl;
}
正常运行。
程序4:
string test() {
cout << "test" << endl;
}
int main() {
test();
cout << "finished test" << endl;
}
正常运行。
疑问一: 这样的程序应该在编译时报错?
疑问二: 返回值是vector或者是包含了vector的自定义类时,做了什么操作导致程序运行时崩溃?
网友评论