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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 113, средняя оценка - 4.84
Егорка47
7 / 6 / 1
Регистрация: 26.10.2010
Сообщений: 249
#1

В чем разница malloc и calloc? - C++

22.12.2010, 17:27. Просмотров 15384. Ответов 8
Метки нет (Все метки)

подскажите пожалуйста,в чем разница malloc и calloc?
эмалок выделение динамической памяти а сиалок выделение чистой памяти. в смысле чистой?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2010, 17:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос В чем разница malloc и calloc? (C++):

В чем преимущества new и delete и могут ли они действительно заменить функции calloc, malloc, free, realloc? - C++
Язык программирования C поддерживает функции динамического управления пямятью: calloc, malloc, free, realloc - которые неподдерживают...

Malloc + reinterept_cast и new. В чем разница? - C++
Уважаемые форумчане, скажите пожалуйста, в чем разница между этим: int* arr_i; arr_i = reinterpret_cast<int*>(malloc(sizeof(int)*...

В чем разница между new и malloc()? - C++
Всем доброго дня ! Начал читать книгу Пахомов Б. "C/C++ и MS Visual C++ 2008 для начинающих" До этого прочитал С++ за 21 день. ...

В чем разница между malloc и new? - C++
в чем разница? что лучше использовать?

calloc vs malloc - C++
Объясните,пжлста,чем отличается malloc oт calloc?

malloc vs. calloc - C++
Когда стоит использовать malloc , а когда calloc?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
sandye51
программист С++
684 / 586 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
22.12.2010, 17:34 #2
char *calloc(n,size);
unsigned n; количество элементов
unsigned size; длина каждого элемента в байтах
Описание

Функция calloc захватывает пространство для хранения масси-

ва из n элементов, каждый длиной size байт. Каждый элемент иници-
ализируется в 0.




char *malloc(size);
unsigned size; количество байтов в захваченном
блоке

Описание.

Функция malloc захватывает блок памяти по крайней мере не
меньшей, чем из size байтов. (Блок может быть больше, чем size
байтов, принадлежащих пространству, которое требуется для вырав-
нивания и для поддержания информации).
1
Егорка47
7 / 6 / 1
Регистрация: 26.10.2010
Сообщений: 249
22.12.2010, 17:37  [ТС] #3
другими словами салок выделяет память чтотко на размер массива а эмалок можно взять чуть больше. я правильно понял?)
0
oxotnik
1590 / 1067 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
22.12.2010, 17:40 #4
Цитата Сообщение от Егорка47 Посмотреть сообщение
а эмалок можно взять чуть больше
это значит, что она выделяет память, в которую гарантированно влезут некие данные с учетом выравнивания. calloc выделяет только указанный массив и плюс к этому обнуляет все внутри него.
1
Егорка47
7 / 6 / 1
Регистрация: 26.10.2010
Сообщений: 249
22.12.2010, 17:46  [ТС] #5
в смысле обнуляет?
0
oxotnik
1590 / 1067 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
22.12.2010, 17:50 #6
примерно тоже самое, что делает ф-я memset(&buf, 0, sizeof(buf)) - все байты нулю приравнивает
0
Егорка47
7 / 6 / 1
Регистрация: 26.10.2010
Сообщений: 249
22.12.2010, 17:53  [ТС] #7
я не знаю такой функции..вроде.
все равно не понял..размер будет 0 байт?или что?
простите за возможно глупые вопросы
0
oxotnik
1590 / 1067 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
22.12.2010, 17:58 #8
нет, был к примеру массив байт, в памяти выглядел так:
{0x01, 0xA2, 0xFA, 0xFF, 0x00, 0x33}
т.е. память была кем то "загажена" (отсюда к стати и растут ноги, того что переменные перед использованием надо инициализировать)
после мемсета или выделения каллоком стало все по нулям
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
2
Егорка47
7 / 6 / 1
Регистрация: 26.10.2010
Сообщений: 249
22.12.2010, 17:59  [ТС] #9
спасибо большое,понятно теперь!)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2010, 17:59
Привет! Вот еще темы с ответами:

Malloc / calloc - C++
здравствуйте. Интересует такой вопрос : динамическая память. Когда мы выделяем память при помощи функции malloc то нас в универе учат...

Как string создает строку?(calloc, malloc) - C++
стринг создает строку с помощью calloc, malloc?

Можно ли выделять память под объект класса с помощью функций calloc, malloc или realloc? - C++
Интересует данный вопрос. Можно ли и имеет ли вобще смысл например выделять память под объект класса с помощью функций calloc, malloc или...

Чем заменить calloc? - C++
Здравствуйте, подскажите, как можно заменить str2 = (char*)calloc(strlen(str1) + 1, 1); на простое выделение в С++? Пробовал так : ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
22.12.2010, 17:59
Ответ Создать тему
Опции темы

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