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」。下面描述了 代碼片段。使用回推的SEGV
很好地工作,任你省略實際上導致代碼的一部分段錯誤,或索引實際上超出界限。順便說一下,使用一個普通的'vector'數組幾乎總是沒用,也是一個糟糕的主意,用'vector'代替。 –
us2012
請提供完整的堆棧跟蹤,並考慮使用「vector」或「vector」來代替。 – trojanfoe