The UNIX and Linux Forums  
Hei og Velkommen fra USA til UNIX og Linux Forums! Takk for besøket og Delta i vårt globale samfunn.

Go Back   UNIX og Linux Forums > Top Forums > UNIX for Advanced & ekspertbrukere
.
google unix.com



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

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 Tools Søk i denne tråden Rate Thread Visningsmoduser
  #1 (permalink)  
Old 07-16-2008
salvi salvi is offline
Registrert bruker
  
 

Bli Dato: juli 2008
Innlegg: 7
memset vs calloc

Kjære Venner,
Kan noen fortelle meg forskjellen mellom memset og calloc funksjon i C.

Hilsen,
Selvi
  #2 (permalink)  
Old 07-16-2008
zaxxon's Avatar
zaxxon zaxxon is offline Forum Staff  
Moderator
  
 

Bli Dato: Sep 2007
Sted: Tyskland
Innlegg: 2281
Uh oh ... beste blir flyttet / postet i High level programming subforum naboen Jeg antar (hvis ingen svar kommer).
  #3 (permalink)  
Old 07-16-2008
kløver shamrock is offline Forum Advisor  
Registrert bruker
  
 

Bli Dato: Oct 2007
Beliggenhet: USA
Innlegg: 750
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.
  #4 (permalink)  
Old 07-16-2008
osulinux osulinux is offline
Registrert bruker
  
 

Bli Dato: juni 2008
Innlegg: 31
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 ().
  #5 (permalink)  
Old 07-17-2008
salvi salvi is offline
Registrert bruker
  
 

Bli Dato: juli 2008
Innlegg: 7
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.
  #6 (permalink)  
Old 07-17-2008
Jim McNamara jim mcnamara is offline Forum Staff  
...@...
  
 

Bli Date: Feb 2004
Beliggenhet: NM
Innlegg: 5754
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.
  #7 (permalink)  
Old 07-17-2008
osulinux osulinux is offline
Registrert bruker
  
 

Bli Dato: juni 2008
Innlegg: 31
Å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?
Closed Thread

Hugseliste

Thread Tools Søk i denne tråden
Søk i denne tråden:

Avansert søk
Visningsmoduser Ranger denne tråden
Ranger denne tråden:

Innleggsaktivitet Regler
Du kanskje ikke poste nye tråder
Du kanskje ikke poste svar
Du kanskje ikke post vedlegg
Du kanskje ikke redigere innleggene dine

BB-kode er
Smilefjes er
[IMG] koden
HTML-koden Av
Pingbacks er
Refbacks er




Alle klokkeslett er GMT -4. Nå er klokken 08:34.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant nettadresser av vBSEO 3.2.0