![]() |
Hei og Velkommen fra USA til UNIX og Linux Forums! Takk for besøket og Delta i vårt globale samfunn.
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Rules | Lenker | Album | FAQ | Medlemsliste | Kalender | Søke | Dagens innlegg | Marker forumene som lest |
| UNIX for Advanced & ekspertbrukere Expert-til-ekspert. Lær avanserte UNIX UNIX kommandoer, Linux operativsystem, systemadministrasjon, programmering, Shell, Shell Scripts, Solaris, Linux, HP-UX, AIX, OS X, BSD. |
Mer UNIX og Linux Forum Emner Du kan finne nyttig
|
||||
| Tråd | Tråd startet | Forum | Svar | Siste innlegg |
| spørsmål i memset | arunkumar_mca | UNIX for Dummies Spørsmål og svar | 7 | 08-09-2007 12:08 |
| om memset fuction | ranj @ chn | High Level Programmering | 3 | 01-31-2006 08:59 |
![]() |
|
|
LinkBack | Thread Tools | Søk i denne tråden | Rate Thread | Visningsmoduser |
|
|
|
||||
|
memset () initialiseres byte strenger til en brukers gitt verdi som er begrenset til unsigned char rekkevidde. Den ikke tildele ingen hukommelse.
calloc () allokerer minne om alle typer (int, int, struct) og initialiseres som lagringsplass til nuller. Begge initialisere et gitt lagerområde [memset () er den mer eksklusive av de to funksjonene], men bare én tildeler minne for lagring av en bestemt objekttype. |
|
||||
|
calloc () er vanligvis brukes til å lage arrays. Det er slag av like malloc () ved at den allokerer minne, men calloc () som shamrock påpeker setter allokert minne til 0.
Effekten av calloc () er den samme som gjør malloc () etterfulgt av memset (). |
|
||||
|
Kjære Venner,
Takk for svar. Egentlig da jeg leste koden til traceroute jeg så følgende uttalelse. 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 er av datatype struct ip *. packlen er størrelsen på pakken (dvs, 40 bytes). Min tvil er derfor her de ikke bruker calloc funksjonen. Hilsen, Selvi. |
|
||||
|
Det er eldre C-kode (fordi moderne malloc ikke og bør cast).
Jeg gjetter: Noen eldre calloc implementeringer hatt problemer faktisk nullstille ut allokert minne. Så kanskje coder visste at dette var et problem. Plus, kaller calloc en tilsvarende memset uansett - så det er opp til deg å velge hvilken du vil bruke: malloc + memset eller calloc. Jeg personlig sjelden bruk calloc. |
|
||||
|
Årsaken er at calloc () impliserer array tilgang. De er ikke å behandle minneområdet som et array her så bruk malloc (). calloc () er sjelden brukes det synes for meg, og i dette tilfellet ville det ikke noen mening å bruke. Tenk på det, hva ville du gjøre en rekke i dette tilfellet, hvilken type?
|
![]() |
| Hugseliste |
| Thread Tools | Søk i denne tråden |
| Visningsmoduser | Ranger denne tråden |
|
|