我在运行程序中有一个分割故障(核心倾倒)。第一个版本运行完美,但我需要列表作为指针,但是该代码不再起作用,请参阅第二个代码。我在做什么错?
运行版本:
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>();
请记住,完成后,您也需要正确清理堆分配的内存。
第二个无法运行,因为没有list<int>
对象,而只是指向arbitary内存空间的指针。
如果要使用指针,请先分配内存区域。