cam*_*cam 1 c++ stack-overflow
我在这个for循环的第一次迭代中得到了堆栈溢出
for (int q = 0; q < SIZEN; q++)
{
cout<<nList[q]<<" ";
}
Run Code Online (Sandbox Code Playgroud)
nList是int类型的向量,包含376个项目.nList的大小取决于程序中定义的常量.该程序适用于高达376的每个值,然后在376之后它停止工作.
有什么想法吗?
如果"停止工作",你的意思是崩溃,那么你可能正在读取超过缓冲区的末尾.vector::operator[]没有范围检查,所以它会让你自己射击脚.
如果要遍历向量,请使用迭代器,或者至少nList.size().
因此,对代码的修改最少:
for (int q = 0; q < nList.size(); q++)
{
cout << nList[q] << " ";
}
Run Code Online (Sandbox Code Playgroud)
或者使用迭代器
for (std::vector<int>::const_iterator it = nList.begin();
it != nList.end(); ++it) {
cout << *it << " ";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
168 次 |
| 最近记录: |