Forum: Compiler & IDEs Eintrag im statischen Array -> .ctor?


von Vernon D. (petunialovesme)


Lesenswert?

Ich habe eine Frage zur Vorgehensweise des Compilers bei folgender 
Struktur:

Ich erstelle ein statisches Array mit Pointern, so etwas:

Deklaration:
1
typedef struct _myDataType
2
{
3
   ...
4
   int* value;     
5
   ...
6
} myDataType;
7
8
static myDataType ITEMS[];
9
static int myValue;

Definition:
1
myDataType MyNameSpace::ITEMS[] =
2
{  
3
   {...
4
   &myValue
5
   ...}
6
}

Ersetze ich nun den Pointer auf das statische Element durch ein "echtes" 
Objekt, erstellt mir der Compiler in der Sektionsübersicht einen Eintrag 
mit
1
.ctors                   0x4       0xXXXX
2
.ddalign                 0x4       0xXXXX

Herausgefunden habe ich, dass das ctor für Construktor steht, aber was 
versucht er genau hier zu konstruieren? Oder bedient er sich hier dem 
(nicht vorhandenen Copy-Konstruktor?)

von Markus F. (mfro)


Lesenswert?

Sobald die Struct nicht mehr nur aus PODs 
(https://de.wikipedia.org/wiki/Plain_Old_Data_structure) besteht, ist 
sie selber auch kein POD mehr (und unterliegt damit auch völlig anderen 
- C++ - Gesetzen als vorher).

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Vernon D. schrieb:
> erstellt mir der Compiler in der Sektionsübersicht einen Eintrag mit .ctors

Eine Liste statischer Konstruktoren bzw.hier mit einem statischen 
Konstruktor. Mehr siehst du im erzeugten Assembler-Code, z.b. mit 
-save-temps in den .s-Files.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.