Ich habe etwas C-Code, der so etwas wie ein Puzzle ist. Aus einem Grund, mit diesem Code zu tun, frage ich mich, wie ich feststellen kann, ob ein struct
Objekt auf dem Heap oder Stack endet?Ist es auf dem Stack oder Heap?
Die Objekte sind nicht mit malloc
oder calloc
geschaffen. Sie beginnen ihr Leben in Form eines Arrays. Für die Zwecke dieses Posts werde ich die Struktur Emp anrufen.
Emp myEmp[6];
/* Each myEmp[?] item is populated in code */
Die Objekte werden sortiert und auf verschiedene Weise und an einem bestimmten Punkt betätigt wird, werden die Objekte kopiert und dann übergeben an einen Array-Zeiger. Die Kopie erfolgt über memcpy
. Die Objekte werden dann in etwa wie folgt eingefügt: Emp* emps_a[6]
.
Die Objekte gehen von einer Kopie und sind in den oben genannten emps_a zugewiesen.
int i;
for(i = 0; i < n; i++)
{
emps_a[i] = myEmpsCopy + i;
}
Ich bin mir nicht sicher, ob einige oder etwas davon meine Frage betrifft. Ich brauche nie frei() oder mache Speicher aufräumen ... Ich fürchte, ich weiß nicht viel über C.
Die Hilfe wird sehr geschätzt.
Faustregel: Wenn Sie malloc angerufen haben, müssen Sie frei anrufen. Die Umkehrung - Wenn Sie malloc nicht angerufen haben, dürfen Sie nicht frei anrufen - ist normalerweise, aber nicht immer wahr. (Einige Funktionen rufen malloc für Sie auf. Wenn sie dies tun, sollte dies in großen roten Buchstaben in der Dokumentation der Funktion geschrieben werden.) –