C++ STD::列表分段错误
我在运行程序时遇到了一个分段错误。第一个版本运行得很好,但是我需要列表作为指针,但是代码不再工作了。请参阅第二个代码。我做错了什么 运行版本:C++ STD::列表分段错误,c++,list,fault,C++,List,Fault,我在运行程序时遇到了一个分段错误。第一个版本运行得很好,但是我需要列表作为指针,但是代码不再工作了。请参阅第二个代码。我做错了什么 运行版本: int main(int argc, char *argv[]) { std::list<int> TestList; for (int i = 0; i < 10; ++i) { TestList.push_back(i); } for (std::list<int>::const_iterat
int main(int argc, char *argv[]) {
std::list<int> TestList;
for (int i = 0; i < 10; ++i) {
TestList.push_back(i);
}
for (std::list<int>::const_iterator iterator = TestList.begin(), end = TestList.end(); iterator != end; ++iterator) {
std::cout << *iterator << std::endl;
}
return 0;
}
int main(int argc, char *argv[]) {
std::list<int> *TestList;
for (int i = 0; i < 10; ++i) {
TestList->push_back(i);
}
for (std::list<int>::const_iterator iterator = TestList->begin(), end = TestList->end(); iterator != end; ++iterator) {
std::cout << *iterator << std::endl;
}
return 0;
}
非运行版本:
int main(int argc, char *argv[]) {
std::list<int> TestList;
for (int i = 0; i < 10; ++i) {
TestList.push_back(i);
}
for (std::list<int>::const_iterator iterator = TestList.begin(), end = TestList.end(); iterator != end; ++iterator) {
std::cout << *iterator << std::endl;
}
return 0;
}
int main(int argc, char *argv[]) {
std::list<int> *TestList;
for (int i = 0; i < 10; ++i) {
TestList->push_back(i);
}
for (std::list<int>::const_iterator iterator = TestList->begin(), end = TestList->end(); iterator != end; ++iterator) {
std::cout << *iterator << std::endl;
}
return 0;
}
第二个无法运行,因为没有列表对象,只有一个指向任意内存空间的指针
如果要使用指针,请首先分配内存区域。在第二个版本中,TestList只是一个指针,它不指向任何有效的列表对象。试一试
std::list<int>* TestList = new std::list<int>();
记住,完成后还需要正确清理为列表分配的堆内存