Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Динамическое заполнение двумерного массива


Автор: ioManip 6.2.2013, 13:44
Здравствуйте! smile

Смотри, есть участок кода:
Код

int size_n,   // строки
     size_m  // столбцы

int **Matrix = new int *[size_n];   // (1)
for( int i = 0; i < size_n; i++)         //  (2)
     Matrix[i] = new int [size_m];    //  (2)


Поправьте меня, если я не прав. В данном участке кода, (1) мы создаем указатель на указатель, который в свою очередь указывает на массив (Matrix), здесь же мы создаем указатель, который направляет нас (указывает) на выделенное место в памяти под строки (size_n). (2) В цикле мы динамически выделяем память под столбцы(size_m).

Скажите, мои рассуждения хоть чуточку близки к истине?

Автор: feodorv 6.2.2013, 18:08
Цитата(ioManip @  6.2.2013,  14:44 Найти цитируемый пост)
создаем указатель на указатель, который в свою очередь указывает на массив (Matrix)

Нет  smile 
Мы создаём массив указателей.

Цитата(ioManip @  6.2.2013,  14:44 Найти цитируемый пост)
здесь же мы создаем указатель, который направляет нас (указывает) на выделенное место в памяти под строки (size_n)

Мы выделяем память под массив указателей...

Цитата(ioManip @  6.2.2013,  14:44 Найти цитируемый пост)
В цикле мы динамически выделяем память под столбцы(size_m).

Гм. Под строки, вроде)))

Код

int row1[size_m];
int row2[size_m];
...
int rown[size_m];

int *Matrix[] = { row1, row2, ... rown };

Автор: ioManip 7.2.2013, 08:19
feodorv,  Ага, с этим ясно. Скажите, как правильнее ( аккуратнее smile )  освобождать память?

Вариант 1.
Код

for( int i = 0; i < sizeArray; i++)
       delete  [] Matrix[i];
       delete  [] Matrix;


Вариант 2.
Код

delete  [] Matrix;

Автор: feodorv 7.2.2013, 13:03
Цитата(ioManip @  7.2.2013,  09:19 Найти цитируемый пост)
Скажите, как правильнее ( аккуратнее )  освобождать память?

Первый вариант, конечно. Во втором - утечка памяти...

Автор: ioManip 7.2.2013, 13:07
Спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)