The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Выделение памяти под двумерный массив, !*! Dronissimo, 14-Июн-11, 23:26  [смотреть все]
Доброго времени суток
помогите разобраться..запутался-выделение памяти под двумерный массив
              
  int **array1 = (int **)malloc(nrows * sizeof(int *));
        for(i = 0; i < nrows; i++)
        array1[i] = (int *)malloc(ncolumns * sizeof(int));

не могу понять почему мы вначале выделяем память под строки , а потом под столбцы
т.е

\\пускай будет char для наглядности
              
  char **array1 = (char **)malloc(5 * sizeof(char*));
        for(i = 0; i < 5; i++)
        array1[i] = (char *)malloc(3 * sizeof(char));

получается , что создается
_ _ _ _ _
|1|2|3|4|5| -rows
_   _
|_| |_|
|_| |_|
|_| |_|
_   _
|_| |_|
|_| |_|
|_| |_|
_  
|_|  
|_|
|_|

как то так =)
имею в виду что я думал
\\ вначале создается столбец длинной ncolumns
for (i=0;i<ncolumns;i++)
    *(array+i)

\\и каждый указатель в array[i] указывает на выделенную память длинной nrows*sizeof(int**)

подскажите что и как?




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру