Ho un codice C che è qualcosa di un puzzle. Per un motivo che ha a che fare con questo codice, mi chiedo come posso sapere se un oggetto si esaurisce nell'heap o nello stack ?È nello stack o heap?
Gli oggetti sono non essere creato con malloc
o calloc
. Iniziano la loro vita sotto forma di un array. Ai fini di questo post, chiamerò la struct Emp.
Emp myEmp[6];
/* Each myEmp[?] item is populated in code */
Gli oggetti vengono ordinati e manipolati in vari modi e ad un certo punto, gli oggetti vengono copiati e poi consegnato a un array puntatore. La copia viene effettuata tramite memcpy
. Gli oggetti vengono quindi inseriti in qualcosa come: Emp* emps_a[6]
.
Gli oggetti passano da una copia e sono assegnati al precedente emps_a.
int i;
for(i = 0; i < n; i++)
{
emps_a[i] = myEmpsCopy + i;
}
non sono sicuro se alcuni o niente di tutto questo ha attinenza con la mia domanda. Non ho mai bisogno di liberare() o di pulire la memoria ... Temo di non sapere troppo di C.
L'aiuto è molto apprezzato.
Regola generale: se hai chiamato malloc, devi chiamare gratis. L'inverso - Se non hai chiamato malloc, non devi chiamare gratis - è di solito, ma non sempre, vero. (Alcune funzioni chiameranno malloc per te. Se lo fanno, questo dovrebbe essere scritto in grandi lettere rosse nella documentazione della funzione.) –