2013-09-25 2 views
0

왜 이것이 틀린 것인지 내게 말해 줄 사람이 필요합니다. 나는 내가 범한 잘못을 이해할 수있는 방법에 정통하지 않습니다. 내가 Valgrind의에 유효하지 않은 쓰기 오류가 발생하고있어 여기에서 말한 몇 가지 이유를 들어잘못된 쓰기 관련 문제가 있습니다.

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; 
    } 
} 

. 내가이 글을 쓸 때마다 나는 그들을 데리고있는 것처럼 보인다. 어느 시점에서 프로그램은 심지어 할당되지 않은 것을 삭제하려고 시도했다는 malloc 오류를 던졌습니다.

+0

중요한 것은 포인터를 사용하여 리소스를 관리한다고 생각합니다. – chris

+0

이것이 C와 어떻게 관련이 있습니까? –

답변

1
values_[n] = NULL; 

이 줄에서는 할당 한 배열의 끝을 지나서 하나를 쓰고 있습니다. 아마도 values_[i]을 사용하셨습니까?

+0

나는 내가 그 일을했다는 것을 믿을 수 없다. 나는 나쁘다. 나는 기분이 좋을 것이다. 정말 고맙습니다. t-minus에서 5 분 안에 답을 얻을 수 있습니다. – jboulter11

+1

걱정하지 않아도 모든 사람에게 발생합니다. –

관련 문제