类似的代码.一个工作,一个崩溃.为什么?
Similar code. One works, one crashes. Why?
我正在使用Code::Blocks 10.05中的C++为欧拉项目解决一个问题,发现我的程序在一个奇怪的地方崩溃:初始化。 下面是重现该问题的代码片段。
#include <iostream>
#include <vector>
#include <deque>
using namespace std;
vector<deque<uint32_t> > f;
int main()
{
deque<uint32_t> p;
deque<uint32_t>::iterator dit1,dit2;
p.push_back(0);
p.push_back(1);
f.push_back(p);
cout << f.back().size() << endl;
cout << "f= ";
for(dit1==f.back().begin();dit1!=f.back().end();dit1++) cout << *dit1 << " ";
cout << "Checkpoint" << endl;
return 0;
}
在这里发布之前,我尝试了一个测试程序,看看我是否可以找出问题所在。
#include <iostream>
#include <deque>
#include <vector>
using namespace std;
int main(void)
{
uint64_t i;
deque<uint32_t> d;
vector<deque<uint32_t> > vd;
deque<uint32_t>::iterator it;
for(i=1;i<=5;i++) d.push_back(i);
vd.push_back(d);
for(it=vd.back().begin();it!=vd.back().end();it++) cout << *it << " ";
return 0;
}
第一个程序崩溃,而第二个程序正确重现双端。 除了变量名,我看到的唯一主要区别是第一个程序使用全局变量,而测试程序使用局部变量。 那么为什么第一个程序在 for 循环中崩溃而第二个程序没有呢?
您在第一个程序中的 for 循环中使用了==
而不是=
。
相关文章:
- 为什么它只打印双链接列表的第一个值,而我的程序却崩溃了
- 我需要做一个空函数循环回来,而不会让它崩溃或跳过
- 类似的代码.一个工作,一个崩溃.为什么?
- 当我尝试将一个向量元素的值分配给另一个向量元素时,为什么我的应用程序会崩溃
- C++程序在迭代到数组的最后一个元素时崩溃
- 仅包含一个 printf 的程序崩溃
- 尝试从另一个过程读取32位整数时,ReadProcessMemory崩溃了
- 试图删除最后一个std ::向量元素时,程序会崩溃
- 从CSV文件读取时,试图将值插入一个字符串中时崩溃
- 一个函数怎么能完成它的目标,只是在返回主函数后崩溃?
- winsock连接调用崩溃如果多个线程运行,则在一个线程中正常工作
- 为什么将对象从一个智能指针移至另一个原因崩溃
- Qopenglwidget将上下文移至另一个线程崩溃
- 崩溃,如果使用向量删除了一个嵌入式容器的destructor中删除char*成员
- Malloc导致程序崩溃,在哪里寻找下一个线索
- 使用 XMMatrixLookAtLH - 试图面对一个点,但不起作用/崩溃?
- 一个简单的c++程序崩溃
- 我有一个 c++ 代码,它在启动时崩溃,然后到达问题所在 main() 的执行
- 传递一个向量作为参数并使用它,它为什么会崩溃
- gdb在调试中的应用程序崩溃时创建一个文件