![]() |
|
|
google unix.com
|
|||||||
| Forums | Registreer | Forum Regels | Links | Albums | Veelgestelde vragen | Ledenlijst | Kalender | Zoeken | Today's Posts | Markeer forums als gelezen |
| UNIX for Advanced & Expert Gebruikers Expert-to-Expert. Hier geavanceerde UNIX-, UNIX-commando's, Linux, Operating Systems, System Administration, programmering, Shell, Shell scripts, Solaris, Linux, HP-UX, AIX, OS X, BSD. |
Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
|
||||
| Draad | Thread Starter | Forum | Antwoorden | Last Post |
| vragen in memset | arunkumar_mca | UNIX voor Dummies Questions & Answers | 7 | 08-09-2007 01:08 PM |
| over memset functie | ranj @ CHN | Hoog Niveau Programmering | 3 | 01-31-2006 08:59 |
![]() |
|
|
LinkBack | Thread Tools | Zoeken in deze Thread | Rate Thread | Display Modes |
|
|
|
||||
|
memset () initialiseert byte strings aan een gebruiker geleverde waarde die is beperkt tot de unsigned char bereik. Het is niet toewijzen geen geheugen.
calloc () wijst geheugen van elk type (char, int, struct) en initialiseert dat de opslag van nullen. Beide initialiseren een bepaalde opslag ruimte [memset () wordt de meer exclusieve van de twee functies], maar slechts een toegewezen geheugen voor de opslag van een bepaald object type. |
|
||||
|
calloc () wordt meestal gebruikt om arrays te maken. Het is een soort van soortgelijke malloc () is dat in het toegewezen geheugen, maar calloc () als Shamrock wijst op het toegewezen geheugen op 0 sets.
Het effect van calloc () is hetzelfde als het doen malloc (), gevolgd door memset (). |
|
||||
|
Dear Friends,
Dank u voor uw antwoord. Eigenlijk toen ik het lezen van de code van de traceroute zag ik de volgende verklaring. 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 is van het datatype struct ip *. packlen is de grootte van het pakket (dat wil zeggen, 40 bytes). Mijn twijfel is de reden waarom ze hier niet met behulp van de calloc functie. Groeten, Selvi. |
|
||||
|
Dat is de oudere C-code (omdat moderne malloc niet en moet worden gegoten).
I'm guessing: Sommige oudere calloc implementaties problemen had eigenlijk op nul stellen van de toegewezen geheugen. Dus misschien de codeur wist dit was een probleem. Plus, heeft calloc oproep een equivalent van memset toch - dus het is aan u om welke u wilt gebruiken: malloc + memset of calloc kiezen. Ik persoonlijk zelden gebruik calloc. |
|
||||
|
De reden is dat calloc () impliceert array toegang. Ze zijn niet behandelen van het geheugen gebied als een array hier dus gebruik van malloc (). calloc () wordt zelden gebruikt lijkt het mij, en in dit geval zou geen zin om te gebruiken. Denk er eens over, wat zou u een reeks van in dit geval, wat voor soort?
|
![]() |
| Bladwijzers |
| Thread Tools | Zoeken in deze Thread |
| Display Modes | Beoordeel deze draad |
|
|