|
7 / 6 / 0
Регистрация: 26.10.2010
Сообщений: 249
|
|
В чем разница malloc и calloc?22.12.2010, 17:27. Показов 24966. Ответов 16
Метки нет (Все метки)
подскажите пожалуйста,в чем разница malloc и calloc?
эмалок выделение динамической памяти а сиалок выделение чистой памяти. в смысле чистой?
0
|
|
| 22.12.2010, 17:27 | |
|
Ответы с готовыми решениями:
16
В чем разница между malloc() и (char *)malloc() Выполнить функциями calloc() или malloc() Вместо функции calloc() примените функцию malloc() |
|
программист С++
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
|
|||||||||||
| 22.12.2010, 17:34 | |||||||||||
Функция calloc захватывает пространство для хранения масси- ва из n элементов, каждый длиной size байт. Каждый элемент иници- ализируется в 0.
Функция malloc захватывает блок памяти по крайней мере не меньшей, чем из size байтов. (Блок может быть больше, чем size байтов, принадлежащих пространству, которое требуется для вырав- нивания и для поддержания информации).
1
|
|||||||||||
|
7 / 6 / 0
Регистрация: 26.10.2010
Сообщений: 249
|
|
| 22.12.2010, 17:37 [ТС] | |
|
другими словами салок выделяет память чтотко на размер массива а эмалок можно взять чуть больше. я правильно понял?)
0
|
|
|
|
||
| 22.12.2010, 17:40 | ||
|
1
|
||
|
7 / 6 / 0
Регистрация: 26.10.2010
Сообщений: 249
|
|
| 22.12.2010, 17:46 [ТС] | |
|
в смысле обнуляет?
0
|
|
|
7 / 6 / 0
Регистрация: 26.10.2010
Сообщений: 249
|
|
| 22.12.2010, 17:53 [ТС] | |
|
я не знаю такой функции..вроде.
все равно не понял..размер будет 0 байт?или что? простите за возможно глупые вопросы
0
|
|
|
|
|
| 22.12.2010, 17:58 | |
|
нет, был к примеру массив байт, в памяти выглядел так:
{0x01, 0xA2, 0xFA, 0xFF, 0x00, 0x33} т.е. память была кем то "загажена" (отсюда к стати и растут ноги, того что переменные перед использованием надо инициализировать) после мемсета или выделения каллоком стало все по нулям {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
3
|
|
|
7 / 6 / 0
Регистрация: 26.10.2010
Сообщений: 249
|
|
| 22.12.2010, 17:59 [ТС] | |
|
спасибо большое,понятно теперь!)
0
|
|
|
из племени тумба-юбма
|
||
| 07.12.2019, 15:27 | ||
|
Добавлено через 12 минут Из данного объяснения еще понял то, что malloc может выделить память не только для массива, но и для любой переменной. Но опять же, переменную можно объявить стандартным способом, зачем тогда использовать для этого функцию malloc?
0
|
||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|
| 07.12.2019, 16:48 | |
|
В некоторых случаях нам нужна память, изначально содержащая нули. Чтобы например потом заполнить некоторые ячейки, а потом посчитать сумму значений во всех ячейках этой памяти. В других случаях нам всё равно, что там было в памяти, т.к. хотим заново заполнить все её значения. В этом случае предварительное обнуление - лишняя операция, которая впустую будет расходовать такты процессора. А значит её выполнять не нужно.
1
|
|
|
из племени тумба-юбма
|
|
| 07.12.2019, 16:58 | |
|
TRam_, это все вы объясняете про calloc, вот я и спрашиваю, для чего malloc нужен, если calloc умеет все тоже самое, плюс еще обнуление.
0
|
|
|
4085 / 2683 / 432
Регистрация: 09.09.2017
Сообщений: 11,935
|
||
| 07.12.2019, 17:01 | ||
|
Второе - скрытие деталей реализации. Если вы не хотите показывать пользователю приватные поля класса, можно вместо них объявить void*, а в конструкторе выделить память под данные уже нужного размера. Разумеется, "класс" не означает только классов в стиле С++, а объектный подход в общем. В Си такое вполне используется.
1
|
||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|||||||
| 07.12.2019, 17:21 | |||||||
0
|
|||||||
|
Вездепух
13202 / 6837 / 1822
Регистрация: 18.10.2014
Сообщений: 17,296
|
||
| 07.12.2019, 18:55 | ||
malloc и calloc заключается в1. Память, указатель на которую возвратил malloc, содержит "мусор". Память, указатель на которую возвратил calloc, сдержит нулевые биты.2. Функция calloc вычисляет размер требуемого блока памяти путем перемножения своих аргументов. При этом функция calloc несет ответственность за то, чтобы при перемножении не произошло переполнения. Больше отличий нет. Сама идея функции calloc заключается в том, что она будет/может выполнять обнуление эффективно, через возможности подлежащей платформы, а не выполнять прямой memset самостоятельно. Например, выделять память из пула уже обнуленной памяти. Или выполнять "виртуальное (ленивое)" обнуление, Это, разумеется, не всегда возможно, но причина существования calloc заключается именно в этой потенциальной возможности.
1
|
||
| 07.12.2019, 18:55 | |
|
Помогаю со студенческими работами здесь
17
В чем разница между malloc и new? Malloc + reinterept_cast и new. В чем разница? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|