У меня есть массив указателей, указывающих на массивы ints. Я сделал жестко закодированный массив ints (проверьте «массив» ниже), и я хочу вставить его в массив указателей (отметьте «bar» ниже), насколько я могу судить, это все еще массив указателей это указывает на массивы ints.Удаление динамически выделенного зубчатого массива
Он компилируется в порядке; никаких предупреждений. Он работает нормально; и закрывает штраф; До тех пор, пока, по крайней мере, я введу текущую прокомментированную инструкцию delete в деструкторе.
Я полагаю, что мой компилятор на данный момент станет лучшим деструктором, но мне интересно, что я делаю неправильно. Терминальное окно просто выбрасывает гигантскую карту памяти; и googling и поиск SO не очень помогли.
class foo {
public:
int **bar;
int aSize;
//CONSTRUCTOR
foo(int aSize) {
this->aSize = aSize;
bar = new int*[aSize];
for (int i=0;i<aSize;i++) {
bar[i] = new int[aSize + i];
for (int j=0;j<(aSize + i);j++) {
bar[i][j] = 0;
}
}
}
void myfunc(int *pointer) {
bar[0] = pointer;
}
~foo() {
for (int i=0;i<aSize;i++) {
//delete[] bar[i];
}
delete[] bar;
}
};
int main() {
foo *obj = new foo(5);
int array[] = {1,2,3,4};
obj->myfunc(array);
delete obj;
return 0;
};
Я знаю, что я, вероятно, сделал что-то трагическое; Я просто не знаю, что это такое. Существует причина, по которой я не использую STL или другие шаблоны, это просто потому, что я заинтересован в этом. Максимальная критика оценили.
Право, дерьмо, очевидный ответ ... проклятая жаркая погода. Благодарю. Изменение int i = 0 до i = 1 фиксировало его. – dcousens
Горячая погода? [Я завидую вам.] (Http://www.weather.com/weather/today/New+York+NY+USNY0996?from=search_city «Я вам завидую».) –
Вы можете только «удалить []' массив выделяется с помощью 'new []', а не 'new'. Незначительная нитьчка. – Puppy