std :: vector赋值SIGNAL 11和SIGNAL 6

时间:2013-11-02 13:45:52

标签: 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;Error: signal:6 有什么问题?

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

1 个答案:

答案 0 :(得分:3)

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