我一直打這個奇怪的std::vector
行爲,我不能做任何意義。調整大小的指針向量segfaults
粗略地說,代碼如下
#include <iostream>
#include <vector>
class MyClass{
public:
MyClass():
v_(),
w_(init_w())
{};
~MyClass()
{};
std::vector<int*> init_w()
{
v_.resize(4096);
return v_;
};
private:
std::vector<int*> w_;
std::vector<int*> v_;
};
int main()
{
MyClass a;
}
運行這給了我在resize
壞段錯誤。如果爲resize
選擇較低的值,則代碼可能根本不是段錯誤。
更新: 的問題是,相反的是初始化列表表明,w_
得到v_
之前進行初始化。因此,在init_w()
,v_
狀態是未定義的。 在聲明中恢復訂單v_
和w_
可修復問題。
請給出一個最小的編譯示例來顯示問題。 – TemplateRex 2012-07-26 18:40:07
@rhalbersma我已經掙扎了好幾個小時,將代碼分解成小而簡單的代碼,但沒有成功。我意識到這個事實很難找到錯誤。 – 2012-07-26 18:43:00
@Nico:不難,不可能。 -1,我很害怕。 – Troubadour 2012-07-26 18:44:08