Привет Я новичок в указателях и динамической памяти. Предполагается, что программа представляет собой стек на основе массива. Мне нужна помощь при ошибке, возникающей при попытке выделить память переменной-указателю, которая называется _pArr в .h-файле. Когда я пытаюсь создать новый массив с new double[]
, я получаю сообщение об ошибке «нечитаемой памяти» при отладке кода. В приведенном ниже коде я создал новый массив в .cpp-файле, а затем скопировал его в указатель _pArr
, но я все равно получаю ту же ошибку.Непрочитанная память при создании массива указателей в C++
class CStack{
public:
Stack(void);
~Stack(void);
.
.
.
private:
int _capacity=NULL;
int _size=0;
double* _pArr;
}
CStack::CStack(void)
{
if (_capacity == 0){
_capacity = 10;
}
else{
_capacity = _capacity * 2;
}
double* arr;
arr = new double [_capacity]
_pArr=arr;
delete[] arr;
}
Почему эта ошибка возникает и как я могу ее исправить?
Что такое 'arr' и почему вы удаляете его в конструкторе? Кроме того, это имя класса 'Stack' или' CStack'? – Barmar
В чем смысл теста 'if (_capacity == 0)'? Так как это вновь созданный стек, а объявление класса инициализирует его '0', оно всегда будет' 0'. – Barmar
Отключить тему, но не использовать 'NULL' для' int'. –