0
vector<char*> *v =new vector<char*>[size];
for(i=0;i<size;i++)
{
    char *buf=new char[1024];
    ------
    ------
    ind=****;
    v[ind].push_back(buf); // i am sure ind is not our of bounds.
}

new 演算子を使用してベクトルの配列を宣言し、ループに入れました。しかし、SEGV に遭遇しました。私はそれがどのように起こったのか理解できませんでした。私の GDB バックトレースは、「 .....include/c++/4.4.5/ext/new_allocator.h:105」への最後のスタック関数を提供します。コード スニペットを以下に示します。

4

1 に答える 1

2

私はあなたが本当に欲しいと感じています

auto vv = vector<vector<string>>(size/*, vector<string>(1024)*/);

次に、それで作業します

for(auto v& : vv)
{
    v.push_back("ola");
}

于 2013-02-04T16:02:09.957 に答える