2013-09-25 87 views
0

我只是真的需要有人告訴我爲什麼這是不正確的。我不熟悉指針的理解方式來理解我正在犯的錯誤。存在無效寫入問題

template <class T> UndoArray<T>::UndoArray(uint n) 
{ 
    this->size_ = n; 
    this->counts_ = new uint[n]; // this tells how many objs are in || values array 
    values_ = new T*[n]; 
    //declare arrays in each spot of values_ 
    for(uint i=0; i<size_; ++i) //HERE<========= 
    { 
     values_[n] = NULL; 
    } 
} 

由於某些原因,我在這裏說過我在Valgrind遇到無效寫入錯誤。任何時候我寫這些我似乎得到他們。程序甚至會拋出一個malloc錯誤,說我試圖刪除一些尚未分配的東西。

+0

我認爲最重要的是使用指針來管理資源。 – chris

+0

這與C有關嗎? – 2013-09-25 04:13:02

回答

1
values_[n] = NULL; 

在這條線上,你寫了一個超過你分配的數組的末尾。也許你打算使用values_[i]

+0

我甚至不能相信我那樣做,然後用它來打擾你。我很糟糕,我應該感覺不好。非常感謝。在t-減5分鐘後,您將獲得答案狀態。 – jboulter11

+1

不用擔心,它發生在每個人身上。 –