Я согласен с Джейсоном Коэном, хотя мы можем быть немного яснее о причине необходимости удаления ваших указателей с помощью цикла. Для каждого «нового» или динамического выделения памяти необходимо «удалить» выделение памяти. Иногда «удалить» можно скрыть, как со смарт-указателями, но он все еще там.
int main()
{
int *pI = new int;
int *pArr = new int[10];
пока в коде мы выделили два фрагмента динамической памяти. Первый - это просто общее, а второй - массив целых.
delete pI;
delete [] pArr;
эти операторы удаления очищают память, выделенную "новыми" s
int ppArr = new int *[10];
for( int indx = 0; indx < 10; ++indx )
{
ppArr[indx] = new int;
}
Этот бит кода выполняет оба предыдущих распределения. Сначала мы создаем пространство для нашего int в динамическом массиве. Затем нам нужно выполнить цикл и выделить int для каждой точки в массиве.
for( int indx = 0; indx < 10; ++indx )
{
delete ppArr[indx];
}
delete [] ppArr;
Обратите внимание на порядок, в котором я выделил эту память, а затем удалил ее в обратном порядке. Это потому, что если бы мы делали delete [] ppArr; Сначала мы потеряем массив, который говорит нам, каковы наши другие указатели. Этот кусок или память будут возвращены в систему и, следовательно, более не будут надежно считываться.
int a=0;
int b=1;
int c=2;
ppArr = new int *[3];
ppArr[0] = &a;
ppArr[1] = &b;
ppArr[2] = &c;
Об этом, я думаю, следует упомянуть. Тот факт, что вы работаете с указателями, не означает, что память, на которую указывают эти указатели, была выделена динамически. То есть, если у вас есть указатель, это не значит, что его обязательно нужно удалить. Массив, который я здесь создал, распределяется динамически, но указатели указывают на локальные экземпляры целых чисел. Когда мы удаляем это, нам нужно только удалить массив.
delete [] ppArr;
return 0;
}
В конце концов, динамически распределяемая память может быть сложной, и в любом случае вы можете безопасно обернуть ее, как с помощью умного указателя, или с помощью контейнеров stl, а не ваша собственная может сделать вашу жизнь намного приятнее.