访问冲突读取位置0xCCCD84 P> >我是新的C++,目前正在处理我的任务,并且在尝试使用迭代器指针到数组中使用循环时遇到这个运行时错误“访问违例读取位置”。 Flist = data.getFList(); for(Fit = Flist.begin(); Fit != Flist.end(); Fit++) { ++counter; cout << "(" << counter << ") Destination: " << Fit->getDest() << " [Class: " ><< Fit->getClass() << "]" << endl; _getch(); fArr[counter] = *Fit; } 标题

访问冲突读取位置0xCCCD84 P> >我是新的C++,目前正在处理我的任务,并且在尝试使用迭代器指针到数组中使用循环时遇到这个运行时错误“访问违例读取位置”。 Flist = data.getFList(); for(Fit = Flist.begin(); Fit != Flist.end(); Fit++) { ++counter; cout << "(" << counter << ") Destination: " << Fit->getDest() << " [Class: " ><< Fit->getClass() << "]" << endl; _getch(); fArr[counter] = *Fit; } 标题,c++,visual-studio-2010,runtime-error,C++,Visual Studio 2010,Runtime Error,任何帮助都会很好~当您在构造函数中分配内存时,您正在创建一个大小为0的数组,这是没有意义的 相反,只需使用一个航班向量:std::vector fArr,然后返回到它: fArr.push_back(*Fit); 当您在构造函数中分配内存时,您正在创建一个0大小的数组,这是没有意义的 相反,只需使用一个航班向量:std::vector fArr,然后返回到它: fArr.push_back(*Fit); 您现在发布的“构造函数”没有做任何明智的事情:fArr=newflight[0]?!学习

任何帮助都会很好~

当您在构造函数中分配内存时,您正在创建一个大小为
0
的数组,这是没有意义的

相反,只需使用一个航班向量:
std::vector fArr
,然后返回到它:

fArr.push_back(*Fit);

当您在构造函数中分配内存时,您正在创建一个
0
大小的数组,这是没有意义的

相反,只需使用一个航班向量:
std::vector fArr
,然后返回到它:

fArr.push_back(*Fit);

您现在发布的“构造函数”没有做任何明智的事情:
fArr=newflight[0]?!学习使用调试器。并在编译时启用所有警告和调试信息。@us2012您是对的,可能我误解了new关键字的用法=]谢谢。您现在发布的“构造函数”没有做任何明智的事情:
fArr=new Flight[0]?!学习使用调试器。并在编译时启用所有警告和调试信息。@us2012您是对的,可能我误解了new关键字的用法=]谢谢。啊。。我认为“new”用于在运行时动态更改Flight数组的大小,因为我对memcpy使用了与它相同的方法。您可以使用
new
动态分配一些Flight对象,但内存不会自动调整大小。维克托在幕后为你做这些事。啊。。我认为“new”用于在运行时动态更改Flight数组的大小,因为我对memcpy使用了与它相同的方法。您可以使用
new
动态分配一些Flight对象,但内存不会自动调整大小。Vector让car在幕后为你做这件事。
fArr.push_back(*Fit);