Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2010, 18:41   #1
alexobenikov
Пользователь
 
Регистрация: 19.11.2009
Сообщений: 15
По умолчанию В чем разница между malloc и calloc ?

Не совсем разобрался в чем разница между malloc и calloc ?
Не могли бы объяснить..Оба они служат для выделения памяти , но в чем разница ?
alexobenikov вне форума Ответить с цитированием
Старый 10.02.2010, 18:49   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

malloc используется обычно для выделения памяти под одиночные элементы, а calloc - под массивы. В принципе можно и так написать:
malloc(20*sizeof(int));
и можно так:
calloc(20, sizeof(int));
Кроме того, malloc возвращает указатель на "мусор", а calloc обнуляет байты, за счет чего malloc должен работть быстрее.
pu4koff вне форума Ответить с цитированием
Старый 10.02.2010, 21:45   #3
alexobenikov
Пользователь
 
Регистрация: 19.11.2009
Сообщений: 15
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
Кроме того, malloc возвращает указатель на "мусор", а calloc обнуляет байты, за счет чего malloc должен работать быстрее.
А можно объяснить ? Я думал - что мусор - это то что не нужно - то есть никакие указатели на него и не нужны..т.к. он сам не нужен.
alexobenikov вне форума Ответить с цитированием
Старый 10.02.2010, 21:55   #4
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

Это значит что указывает на какое место в адресном пространстве которое не было инициализировано.
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 10.02.2010, 21:56   #5
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от alexobenikov Посмотреть сообщение
А можно объяснить ? Я думал - что мусор - это то что не нужно - то есть никакие указатели на него и не нужны..т.к. он сам не нужен.
Мусором называют неинициализированные данные. Так как мы не знаем значения данных, то они для нас бесполезны - мусор.

...

опоздал )
netrino вне форума Ответить с цитированием
Старый 10.02.2010, 22:01   #6
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

malloc возвращает указатель на адрес памяти, по которому может быть записано что угодна, т.к. мы не знаем что там записано - для нас этом "мусор" и перед использованием этой памяти нам обязательно надо ее инициализировать, т.е записать какое-то значение.
calloc сама инициализирует выделенную память нулями и возвращает на нее указатель и, хотя пользы от памяти, заполненной нулями, не много, это уже не мусор

и я опоздал =)
как много желающий поковыряться в мусоре =)))
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В чем разница между С и С++? Freddy Krjuger Общие вопросы C/C++ 1 14.11.2009 21:23
В чем разница между библиотеками компонентов VCL и WinForms (Delphi)? Denis L. Общие вопросы Delphi 2 04.11.2009 21:10
Разница между временем asd48 Microsoft Office Excel 1 05.06.2009 23:44
Разница между датами kykysya Общие вопросы Delphi 8 26.03.2009 18:22
Разница между датами deenka БД в Delphi 3 31.01.2008 13:21