vc++中,vector分配内存出错~

vc++中,vector分配内存出错~,第1张

代码有点乱,文件太多,而且头文件中有非静态函数的定义。

问题的关键是

vector<int> logcc(ictm,-1)

根据C++标准的规定,logcc会在进入main函数之后初始化,也就是说logcc会在你初始化ictm全局变量之前就会构造。作为未初始化的全局变量,ictm的值此时为0,所以logcc的初始化等同如下:

vector<int> logcc(0,-1)

而在def_array()中,ictm已经赋值成10,所以会造成越界异常。

STL的东西忘的差不多了,不当之处请包涵。

补充:

在适当的地方写下:

logcc.resize(ictm)

比如

int preprocess()

{

ictm=10

logcc.resize(ictm)

vector<int>getVector()返回值为list的副本,而非list;

所以,void pushNum(A* a)中:

第一行,a->getVector()创建一个vector<int>临时变量,临时变量调用push_back(1),list仍为空,之后临时变量销毁;

第二行,a->getVector()创建另一个vector<int>临时变量,由于list为空,该临时变量亦为空,之后临时变量调用at(0)越界出错。

int i,j// i,j要赋值吧

cin>>i>>j

vector<vector<int>> coun(i,vector<int>(j));


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11463583.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存