c++ - std::vector 赋值 SIGNAL 11 和 SIGNAL 6

标签 c++ linux vector

部分代码如下:

#include <iostream>
#include <vector>
#include <string>
using namespace std;

int main(int argc, char *argv[])
{
ios_base::sync_with_stdio(0);
unsigned long k,p,q, all;


cin >> k >> p >> q; 
vector<long> klo(k);
all = 0;
for(unsigned long i = 0;i<k;i++){
    scanf("%d", &klo[i]);
    all += klo[i];
}
vector<unsigned long> stack(all);


stack[1] = 1;
stack.at(2) = 2;

....REST OF THE CODE....

return 0;
}

它在 Windows 和 Linux 上编译。在 Windows 上工作没有问题,但是当我尝试在 Linux 上运行它时 stack[1] = 1; 显示 Error: signal: 11stack.at( 2) = 2;: 错误: signal:6 有什么问题?

@EDIT:我发现 all 变量是空的。似乎 all += klo[i]; 没有返回正确的值。但不知道为什么这段代码在 Windows 中有效

最佳答案

vector<unsigned long> stack(all);达到了,似乎all为 0。

关于c++ - std::vector 赋值 SIGNAL 11 和 SIGNAL 6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19742536/

相关文章:

matlab - 如何在 MatLab 中按元素组合两个大小相等的向量?

c++ - 搜索列表中的最后一个数据实例

c++ - 按句柄的目录路径

android - 3.0内核中的wakelock核心代码和接口(interface)与3.7/3.8有何区别?

linux - 套接字绑定(bind)在一个端口上,但 netstat 和 lsof 等工具显示它在其他端口上监听

在 LINUX 中检查简单的字符设备读/写函数

不同类型 vector 上的 C++ 相同函数

c++ - 如何通过引用 O(1) 在 C++ 中复制 vector ?

c++ - C++中的内存分配顺序

c++ - condition_variable 获取锁速度慢