The UNIX and Linux Forums  
Здравствуйте и добро от Соединенных Штатов UNIX и Linux Форумы! Благодарим Вас за посещение и вступления нашей мирового сообщества.

Go Back   В UNIX и Linux Форумы > Топ форумы > UNIX перспективных И опытных пользователей
.
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

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered By Powered by Google
 
LinkBack Резьба Инструменты Искать в этом Thread Оценить Thread Режимы дисплея
Old 07-16-2008
Сальви salvi is offline
Зарегистрированный пользователь
  
 

Регистрация: Jul 2008
Сообщений: 7
memset VS calloc

Дорогие друзья!
Может ли какой-либо одной расскажите мне разницу между memset и calloc функцию на C.

Привет,
Selvi
Old 07-16-2008
zaxxon's Avatar
zaxxon zaxxon is offline Forum Staff  
Модератор
  
 

Регистрация: Sep 2007
Местонахождение: Германия
Сообщения: 2277
Uh Oh ... лучшие переносится / размещен на высоком уровне программирования subforum рядом Я думаю (если не поступает ответа).
Old 07-16-2008
Shamrock shamrock is offline Forum Advisor  
Зарегистрированный пользователь
  
 

Регистрация: Oct 2007
Место проведения: США
Сообщений: 750
memset () инициализирует байте строки для пользователя поставляется стоимости, что является только для неподписанных символ круга. Она не выделяет какой-либо памяти.

calloc () выделяет память любого типа (CHAR, INT, структуру) и инициализирует что для хранения нулей.

Как инициализировать данный хранения [memset (), которая более не считая двух функций], но только один выделяет память для хранения какого-либо конкретного типа объекта.
Old 07-16-2008
osulinux osulinux is offline
Зарегистрированный пользователь
  
 

Регистрация: Jun 2008
Сообщений: 31
calloc () обычно используется для создания массивов. Это вроде как malloc () в том, что она выделяет память, но calloc (), как Shamrock указывает наборов выделенных памяти 0.

Эффект calloc () так же, как делают malloc (), затем memset ().
Old 07-17-2008
Сальви salvi is offline
Зарегистрированный пользователь
  
 

Регистрация: Jul 2008
Сообщений: 7
Дорогие друзья!
Спасибо за ваш ответ.
На самом деле, когда я читал код из 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.
Old 07-17-2008
Джим Макнамара jim mcnamara is offline Forum Staff  
...@...
  
 

Регистрация: Февраль 2004
Местонахождение: Н. М.
Сообщения: 5754
Это пожилые C-код (поскольку современные malloc не имеет и должно быть поданы).

Я угадал:
Некоторые старые calloc внедрений были проблемы на самом деле обнуления из выделенной памяти. Так, может быть, кодере знал это является проблемой.

Плюс, calloc ли назвать эквивалентом memset вообще - так что до вас выбирать, какой из них использовать: malloc + memset или calloc. Лично я редко использовать calloc.
Old 07-17-2008
osulinux osulinux is offline
Зарегистрированный пользователь
  
 

Регистрация: Jun 2008
Сообщений: 31
Причина заключается в том, что calloc () означает массив доступа. Они не являются лечением области памяти как массив здесь, так что используйте malloc (). calloc () очень редко используется как мне кажется, и в этом случае не имеет смысла использовать. Думайте о нем, что вы могли бы сделать массив в данном случае, какого типа?
Closed Thread

Закладки

Резьба Инструменты Искать в этом Thread
Искать в этом Thread:

Расширенный поиск
Режимы дисплея Оценить эту ветку
Оценить эту ветку:

Отправка Правила
Вы не может Начать новую нитей
Вы не может Почтовые ответы
Вы не может Почтовые вложения
Вы не может Редактировать Ваши сообщения

BB код быть На
Смайлики являемся На
[IMG] код На
HTML-код Вне
Trackbacks являемся На
Pingbacks являемся На
Refbacks являемся На




Часовой пояс GMT -4. Текущее время 07:17 PM.


Powered By: Справка, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Язык Переводы на питание от .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
В UNIX и Linux форумы Содержание Copyright © 1993-2009. Все права Reserved.Ad управления по RedTyger

Содержание соответствующие URL-адреса в vBSEO 3.2.0