![]() |
Здравствуйте и добро от Соединенных Штатов UNIX и Linux Форумы! Благодарим Вас за посещение и вступления нашей мирового сообщества.
|
|
Google unix.com
|
|||||||
| Форумы | Регистрация | Правила форума | Ссылки | Альбомы | ЧАВО | Список участников | Календарь | Поиск | Сегодняшние сообщения | Отметить форумы читать |
| UNIX перспективных И опытных пользователей Эксперт-на-экспертов. Узнайте современные UNIX, UNIX команды, Linux, операционные системы, системы управления, программирование, Shell, Shell скриптов, Solaris, Linux, HP-UX, AIX, OS X, BSD. |
Подробнее UNIX и Linux Темы форума можно найти полезные
|
||||
| Нить | Резьба для начинающих | Форум | Ответы | Последнее сообщение |
| Вопросы в memset | arunkumar_mca | UNIX для чайников Вопросы И Ответы | 7 | 08-09-2007 12:08 PM |
| о memset fuction | ranj @ CHN | Программирования высокого уровня | 3 | 01-31-2006 08:59 AM |
![]() |
|
|
LinkBack | Резьба Инструменты | Искать в этом Thread | Оценить Thread | Режимы дисплея |
|
|
|
||||
|
memset VS calloc
Дорогие друзья!
Может ли какой-либо одной расскажите мне разницу между memset и calloc функцию на C. Привет, Selvi |
|
||||
|
memset () инициализирует байте строки для пользователя поставляется стоимости, что является только для неподписанных символ круга. Она не выделяет какой-либо памяти.
calloc () выделяет память любого типа (CHAR, INT, структуру) и инициализирует что для хранения нулей. Как инициализировать данный хранения [memset (), которая более не считая двух функций], но только один выделяет память для хранения какого-либо конкретного типа объекта. |
|
||||
|
calloc () обычно используется для создания массивов. Это вроде как malloc () в том, что она выделяет память, но calloc (), как Shamrock указывает наборов выделенных памяти 0.
Эффект calloc () так же, как делают malloc (), затем memset (). |
|
||||
|
Дорогие друзья!
Спасибо за ваш ответ. На самом деле, когда я читал код из traceroute я увидел следующее заявление. outip \u003d (структуры IP *) malloc ((неподписанных) packlen); если (outip \u003d\u003d NULL) ( Fprintf (STDERR, "% S: malloc:% S \ N", программа, strerror (errno)); выход (1); ) memset ((символ *) outip, 0, packlen); outip имеет структуру данных IP *. packlen является размер пакета (например, 40 байт). Мои сомнения, поэтому здесь они не используя функции calloc. Привет, Selvi. |
|
||||
|
Это пожилые C-код (поскольку современные malloc не имеет и должно быть поданы).
Я угадал: Некоторые старые calloc внедрений были проблемы на самом деле обнуления из выделенной памяти. Так, может быть, кодере знал это является проблемой. Плюс, calloc ли назвать эквивалентом memset вообще - так что до вас выбирать, какой из них использовать: malloc + memset или calloc. Лично я редко использовать calloc. |
|
||||
|
Причина заключается в том, что calloc () означает массив доступа. Они не являются лечением области памяти как массив здесь, так что используйте malloc (). calloc () очень редко используется как мне кажется, и в этом случае не имеет смысла использовать. Думайте о нем, что вы могли бы сделать массив в данном случае, какого типа?
|
![]() |
| Закладки |
| Резьба Инструменты | Искать в этом Thread |
| Режимы дисплея | Оценить эту ветку |
|
|