Ist es auf dem Stack oder Heap?

Habe ich einige C-code, dass ist so etwas wie ein puzzle. Für einen Grund zu tun, mit diesem code, ich Frage mich, wie kann ich feststellen, ob ein struct Objekt landen wird auf dem heap oder stack?

Sind die Objekte nicht mit malloc oder calloc. Sie beginnen, Ihr Leben in form eines Arrays. Für die Zwecke dieses post, ich werde rufen Sie die Struktur der Emp.

Emp myEmp[6];

/* Each myEmp[?] item is populated in code */

Die Objekte sind sortiert und bearbeitet in verschiedenen weisen und an einem gewissen Punkt, werden die Objekte kopiert und dann übergeben, um ein array-Zeiger. Das kopieren erfolgt über memcpy. Die Objekte werden dann in etwas wie: Emp* emps_a[6].

Die Objekte gehen von einer Kopie und zugeordnet sind, in der oben emps_a.

int i;
for( i = 0; i < n; i++ )
{
    emps_a[i] = myEmpsCopy + i;
}

Ich bin mir nicht sicher, ob einige oder alle dieser hat Einfluss auf meine Frage. Ich brauche nie free() oder den Speicher Aufräumen... ich fürchte, ich weiß nicht allzu viel über C.

Hilfe wird sehr geschätzt.

  • Faustregel: wenn Sie angerufen malloc, müssen Sie rufen Sie kostenlos. Die inverse--Wenn Sie nicht rufen malloc, darf man Sie nicht nennen kostenlos ist--in der Regel, aber nicht immer, wahr. (Einige Funktionen rufen malloc für Sie. Wenn Sie es tun, dies sollte klar gesagt werden, in großen roten Buchstaben in die Funktion der Dokumentation.)
InformationsquelleAutor Frank V | 2009-06-29
Schreibe einen Kommentar