Tendo ad usare le funzioni std * alloc/free per allocare/liberare la memoria dinamica nei miei programmi C. Mi chiedo se ci sono motivi buoni per utilizzare il GLIB Memory Allocation functions invece di quelli standard.allocazione di memoria glib VS std * alloc e free
Sarei grato se la comunità potesse indicare situazioni in cui una di queste soluzioni è un vincitore/perdente. Sono anche interessato a problemi di prestazioni che potrei colpire nel caso io ne usi uno o l'altro.
Grazie!
omesse per piattaforme stato
Questi programmi normalmente eseguiti su tutti i tipi di distribuzioni Linux/Unix, normalmente 64 bit archi compilati utilizzando gcc 4.2.
Su Linux, l'allocazione non fallisce mai. (Con le impostazioni del kernel predefinite.) Quindi, anche se controllo sempre il valore di ritorno di malloc, mi sentirei sporco altrimenti, quel percorso di codice non è mai usato comunque. –
Ho rinunciato a controllare i valori di ritorno di malloc molto tempo fa. Che cosa hai intenzione di fare se hai esaurito la memoria? È probabile che non sarai nemmeno in grado di scrivere un messaggio su stderr. Sembra opportuno interrompere il programma che si verificherà comunque non appena il puntatore nullo viene dereferenziato. – JeremyP
@JeremyP, esattamente!Ecco perché preferirei abortire il programma. Posso immaginare un caso d'uso per verificare se c'è abbastanza memoria per allocare qualcosa, ma per quei casi c'è sempre 'g_try_malloc()'. – ptomato