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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
*krIsTiNa*
0 / 0 / 0
Регистрация: 19.01.2011
Сообщений: 46
#1

calloc, free. - C++

26.04.2011, 16:54. Просмотров 1365. Ответов 6
Метки нет (Все метки)

как правильно выделить память для двумерного массива а[n][m], при m=5,n=10 используя функцию calloc.
и как правильно ее освободить при помощи free.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
 Аватар для Nameless One
5760 / 3409 / 255
Регистрация: 08.02.2010
Сообщений: 7,406
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
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
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
В чем преимущества new и delete и могут ли они действительно заменить функции calloc, malloc, free, realloc? C++
использование calloc C++

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

Или воспользуйтесь поиском по форуму:
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.
Ответ Создать тему
Опции темы

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