Форум программистов, компьютерный форум CyberForum.ru

calloc, free. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
*krIsTiNa*
0 / 0 / 0
Регистрация: 19.01.2011
Сообщений: 46
26.04.2011, 16:54     calloc, free. #1
как правильно выделить память для двумерного массива а[n][m], при m=5,n=10 используя функцию calloc.
и как правильно ее освободить при помощи free.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.04.2011, 16:54     calloc, free.
Посмотрите здесь:

C++ malloc vs. calloc
в чем разница malloc и calloc? C++
calloc vs malloc C++
C++ calloc
Работа с calloc и free в C++ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
26.04.2011, 17:07     calloc, free. #2
Выделение памяти:
C
1
2
3
4
5
int i;
int** matrix;
matrix = calloc(5, sizeof(int*));
for(i = 0; i < 5; ++i)
  matrix[i] = calloc(10, sizeof(int));
Освобождение памяти:
C
1
2
3
for(i=0; i < 5; ++i)
  free(matrix[i]);
free(matrix);
Все без проверок.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
26.04.2011, 17:09     calloc, free. #3
C
1
2
3
4
5
6
7
8
9
10
11
int ** arr, i;
if ( ( arr = (int**)calloc(n, sizeof(int*)) ) == NULL ){
  perror("calloc");
  return 1;
}
for ( i = 0; i < n; ++i ){
  if ( ( arr[i] = (int*)calloc(m, sizeof(int)) ) == NULL ){
    perror("calloc");
    return 1;
}
...
с проверками
Nameless One
26.04.2011, 17:11
  #4

Не по теме:

easybudda, ну дык я предупредил:

Цитата Сообщение от Nameless One Посмотреть сообщение
Все без проверок.

easybudda
26.04.2011, 17:12
  #5

Не по теме:

Цитата Сообщение от Nameless One Посмотреть сообщение
ну дык я предупредил
а это я потом заметил

*krIsTiNa*
0 / 0 / 0
Регистрация: 19.01.2011
Сообщений: 46
26.04.2011, 18:20  [ТС]     calloc, free. #6
Цитата Сообщение от Nameless One Посмотреть сообщение
free(matrix[i]);
но массив же двумерный..почему освобождается только matrix[i], а не matrix[i][j]?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.04.2011, 18:24     calloc, free.
Еще ссылки по теме:

C++ Использование calloc/realloc/free
Чем заменить calloc? C++
C++ Malloc / calloc

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
26.04.2011, 18:24     calloc, free. #7
Цитата Сообщение от *krIsTiNa* Посмотреть сообщение
но массив же двумерный..почему освобождается только matrix[i], а не matrix[i][j]?
Освобождается весь массив
C
1
2
  free(matrix[i]);
free(matrix)
Yandex
Объявления
26.04.2011, 18:24     calloc, free.
Ответ Создать тему
Опции темы

Текущее время: 08:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru