2012-06-14 27 views
1

在for循環中聲明和使用向量有沒有任何已知的堆損壞問題?比如這樣:在C++ for循環中使用向量堆錯誤?

for(int i = 0; i < N; ++i) { 
    std::vector<int> vec; 
    for(int j = 0; j < 3; ++j) { 
     vec.push_back(0); //-Initialize 
    } 
    ... 
    ... 
} 
+0

假設你已經用某種合理的參數化了'std :: vector ',那就沒問題。 –

+0

對於堆錯誤和向量,我會假設你正在使用'vec [x]',其中'x'不是一個有效的索引。用'.at(x)'替換你的'[x]',或者使用assert來幫助找到問題。 –

+1

你是說你實際上遇到堆腐敗?如果是這樣,這可能是由程序的完全不同部分中的內存損壞引起的。您向我們展示的片段看起來很好。 –

回答

5

不,這很好,但可以使用

std::vector<int> vec(3,0) 

,而不是第二個循環可以得到同樣的效果。