![]() |
|
|
google unix.com
|
|||||||
| Fóruns | Registar | Fórum Regimento | Ligações | Álbuns | FAQ | Lista deputados | Calendário | Pesquisa | Today's Posts | Mark Forums Read |
| UNIX & avançada para usuários experientes Especialista-a-Expert. Saiba avançado UNIX, comandos UNIX, Linux, Sistemas Operativos, Administração de Sistemas, Programação, Shell, shell scripts, Solaris, Linux, HP-UX, AIX, OS X, BSD. |
Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
|
||||
| Fio | Thread Starter | Fórum | Respostas | Última postagem |
| perguntas em memset | arunkumar_mca | UNIX para Dummies Perguntas & Respostas | 7 | 08-09-2007 01:08 |
| sobre memset fuction | ranj @ CHN | Alto Nível de programação | 3 | 01-31-2006 08:59 |
![]() |
|
|
Linkback | Thread Tools | Pesquisar este Thread | Rate Thread | Display Modes |
|
|
|
||||
|
memset () inicializa byte cordas para um usuário fornecido valor que está restrita ao unsigned char intervalo. Ela não atribuir qualquer memória.
calloc () aloca memória de qualquer tipo (char, int, struct) e inicializa o armazenamento de zeros. Tanto inicializar uma determinada área de armazenamento [memset () é a mais exclusiva das duas funções], mas apenas uma aloca memória para o armazenamento de um determinado tipo de objeto. |
|
||||
|
calloc () é normalmente usado para criar matrizes. É como o tipo de malloc () em que ela aloca memória, mas calloc (), como estabelece o shamrock recorda memória alocada para 0.
O efeito da calloc () é o mesmo que fazer malloc (), seguido pelo memset (). |
|
||||
|
Caros Amigos,
Obrigado pela sua resposta. Na verdade quando eu estava lendo o código do traceroute eu vi a seguinte declaração. outip \u003d (struct ip *) malloc ((unsigned) packlen); if (outip \u003d\u003d NULL) ( Fprintf (stderr, "% s: malloc:% s \ n", prog, strerror (errno)); exit (1); ) memset ((char *) outip, 0, packlen); outip é de datatype struct ip *. packlen é o tamanho do pacote (ou seja, 40 bytes). Minha dúvida é por isso que aqui eles não usam o calloc função. Atenciosamente, Selvi. |
|
||||
|
Isso é mais velho código C (porque não malloc moderna e deverão ser expressos).
I'm guessing: Algumas implementações mais velhos calloc truncatura realmente tinha problemas com a memória alocada. Então, talvez o codificador sabia que isto era um problema. Plus, calloc faz uma chamada equivalente memset de qualquer maneira - por isso é até você para escolher um que usar: + memset malloc ou calloc. Eu pessoalmente raramente utilizam calloc. |
|
||||
|
A razão é que calloc () implica array acesso. Eles não estão tratando a área de memória como um array aqui para usar malloc (). calloc () é raramente utilizada, parece-me, e, neste caso, não faria qualquer sentido usar. Pense nisso, o que você faça uma série de, neste caso, que tipo?
|
![]() |
| Marcadores |
| Thread Tools | Pesquisar este Thread |
| Display Modes | Esta taxa Thread |
|
|