2013-09-25 1 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? –

ответ

1
values_[n] = NULL; 

На этой строчке вы пишете один конец конца выделенного массива. Возможно, вы хотели использовать values_[i]?

+0

Я не могу даже поверить, что я сделал это, а потом беспокоил вас всех. Я плохой, и мне плохо. Огромное спасибо. Через t-минус 5 минут вы получите статус ответа. – jboulter11

+1

Не беспокойтесь, это случается со всеми. –

 Смежные вопросы

  • Нет связанных вопросов^_^