Domande taggate «free»

17
Cosa succede DAVVERO quando non ti liberi dopo malloc?
Questo è stato qualcosa che mi ha infastidito per secoli. A scuola ci viene insegnato (almeno lo ero) che DEVI liberare ogni puntatore assegnato. Sono un po 'curioso, però, del costo reale di non liberare memoria. In alcuni casi ovvi, come quando mallocviene chiamato all'interno di un ciclo o parte …
538 c  malloc  free 

11
Come fa il libero a sapere quanto liberare?
Nella programmazione C, puoi passare qualsiasi tipo di puntatore che ti piace come argomento da liberare, come fa a sapere la dimensione della memoria allocata da liberare? Ogni volta che passo un puntatore a una funzione, devo anche passare la dimensione (cioè una matrice di 10 elementi deve ricevere 10 …
385 c  size  pointers  free 

13
Come funzionano malloc () e free ()?
Voglio sapere come malloce freelavoro. int main() { unsigned char *p = (unsigned char*)malloc(4*sizeof(unsigned char)); memset(p,0,4); strcpy((char*)p,"abcdabcd"); // **deliberately storing 8bytes** cout << p; free(p); // Obvious Crash, but I need how it works and why crash. cout << p; return 0; } Le sarei davvero grato se la risposta …

23
Impostazione variabile su NULL dopo libero
Nella mia azienda esiste una regola di codifica che dice che, dopo aver liberato la memoria, reimpostare la variabile su NULL. Per esempio ... void some_func () { int *nPtr; nPtr = malloc (100); free (nPtr); nPtr = NULL; return; } Sento che, in casi come il codice mostrato sopra, …

10
Free (ptr) dove ptr è la memoria corrotta NULL?
Teoricamente posso dirlo free(ptr); free(ptr); è un danneggiamento della memoria poiché stiamo liberando la memoria che è già stata liberata. Ma cosa succede se free(ptr); ptr=NULL; free(ptr); Poiché il sistema operativo si comporterà in modo indefinito, non posso ottenere un'analisi teorica effettiva di ciò che sta accadendo. Qualunque cosa stia …


3
Perché lanciare il valore di ritorno di free per annullare?
Sto leggendo un libro ( Programmazione con thread POSIX di Butenhof, 1997) che utilizza C, e mi sono imbattuto nella seguente riga: (void)free(data); Qui, dataè solo un puntatore a una struttura allocata, data = malloc(sizeof(my_struct_t)); Perché il risultato del freecast void? Dalla mia comprensione di C, questo non sembra avere …
82 c  casting  free  void  legacy-code 
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.