malloc?

V

vimal2010

Guest
Che cosa è malloc? perché li usiamo? che cosa è la loro importanza nella programmazione C?

 
malloc (allocazione di memoria) viene utilizzata per allocare dinamicamente la memoria in fase di esecuzione.Possibilità di utilizzo per questa funzione sono:
Leggi il record di lunghezza sconosciuta.
Leggere un numero imprecisato di record del database.

Il modo più semplice per la memoria di riserva è di codice simile al seguente:

void main ()
(
char string [1000];

strcpy (stringa, "Some text");
)

L'esempio di cui sopra ha due problemi:

Se i dati sono meno di 1000 byte stiamo perdendo la memoria.
Se i dati è maggiore di 1000 byte il programma sta andando in crash.
Il 1000 byte sono riservati pensato la vita del programma.Se questo è stato un lungo programma in esecuzione che raramente utilizzato la memoria, in questo caso sarebbe uno spreco.
malloc ci permette di allocare esattamente la giusta quantità di memoria e con l'uso del libero solo per il tempo necessario.-------------------------------------------------- ------------------------------

Biblioteca: stdlib.h

Prototipo: void * malloc (size_t size);

Sintassi: char * String;

Stringa = (char *) malloc (1000);-------------------------------------------------- ------------------------------

Guardando la sintassi esempio di cui sopra, 1000 byte sono riservati e il puntatore punti String al primo byte.Il 1000 byte non vengono ripristinate da malloc.Se la memoria non è disponibile, un puntatore viene restituito NULL.Si prega di notare, il cast cast è tenuta a restituire un puntatore del tipo corretto.

leomecma

 
http://www.cs.cf.ac.uk/Dave/C/node11.html # SECTION001110000000000000000

 
void main () è un errore.Uso int main ().

È inoltre possibile modificare la dimensione dello spazio assegnato con realloc ().

Per evitare crash del programma a causa della strcpy () di stringa di lunghezza sconosciuta, strncpy uso ().

Il carattere (*) cast non è richiesto, e in generale non è raccomandata.

 
Echo47 Credo che l'uso della strcpy () o strncpy () non sono il problema, solo l'idea di utilizzare malloc è importante.A proposito di void main (), void main (void) dipende il compilatore (alcuni dare un allarme senza vuoto) e int main () viene utilizzato in genere per C e alcuni compilatori introducono automaticamente int main (int argc, char * argv [] ) sul progetto.Penso che il problema non è troppo.A proposito di cast ho rimosso esempio di un libro ...ma sono d'accordo che desnecessary, ma non vedo problemi di utilizzo, credo che l'autore usa per pulire ....

Puoi spiegarmi perché cast void main () e può essere pericoloso?

leomecma

 
>>> void main () è un errore.Uso int main ().

Penso che ci sia alcuna diff principali btw ci sono due dichiarazioni e i dipende dal compilatore ..
quando mai main (), è scritto che è stato concordato che non vi siano argomenti e, quindi, main () è inutile ..
e void main () e int main (), qui se si utilizza la seconda
abbiamo bisogno di menzionare l'istruzione "return 0;" alla fine del programma ..
altrimenti ci possono essere possibilità di ritornare intero someother ..così il suo meglio usare
void main () in tutti i casi
saluti

 
Lo standard ANSI C descrive solo due forme principali di:
int main () (/ * ...* /)
int main (int argc, char * argv []) (/ * ...* /)

Ecco cosa dice la comp.lang.c FAQ su void main ():
http://www.eskimo.com/ ~ scs/C-faq/q11.12.html
http://www.eskimo.com/ ~ scs/C-faq/q11.14.html
http://www.eskimo.com/ ~ scs/C-faq/q11.15.html

Oops, non volevo dire che è sbagliato gettare malloc il valore di ritorno.E 'corretto, ma ridondante:
http://www.eskimo.com/ ~ scs/C-faq/q7.7.html
Maggior parte dei programmatori non usano più perché si aggiunge solo confusione.

 

Welcome to EDABoard.com

Sponsor

Back
Top