C++ — Änderungen 9588 → 11306

Zeile 44: Zeile 44:
 
==== Konstruktoren ====
 
==== Konstruktoren ====
 
G++ erstellt eine "ctors*" Sektion, welche ein Array aus Funktionszeigern ist. Diese Funktionszeiger zeigen jeweils auf einen Konstruktor. Man muss nun nur dieses Array durchgehen und alle Funktionen aufrufen und schon hat man alle globalen/statischen Objekte initialisiert.
 
G++ erstellt eine "ctors*" Sektion, welche ein Array aus Funktionszeigern ist. Diese Funktionszeiger zeigen jeweils auf einen Konstruktor. Man muss nun nur dieses Array durchgehen und alle Funktionen aufrufen und schon hat man alle globalen/statischen Objekte initialisiert.
 +
 +
In neueren Version von GCC wurde die Sektion .ctors* in .init_array umbenannt und muss im gegebenenfalls im Linkerscript geändert werden.
  
 
<cpp>
 
<cpp>
Zeile 68: Zeile 70:
 
==== Destruktoren (ohne --enable-__cxa_atexit und ohne -fuse-cxa-atexit) ====
 
==== Destruktoren (ohne --enable-__cxa_atexit und ohne -fuse-cxa-atexit) ====
 
G++ erstellt eine "dtors*" Sektion, analog zur "ctors*" Sektion und speicher dort wiederum ein Array aus Funktionszeigern. Diesmal zeigen diese Funktionszeiger aber auf Destruktoren.
 
G++ erstellt eine "dtors*" Sektion, analog zur "ctors*" Sektion und speicher dort wiederum ein Array aus Funktionszeigern. Diesmal zeigen diese Funktionszeiger aber auf Destruktoren.
 +
 +
In neueren Version von GCC wurde die Sektion .dtors* in .fini_array umbenannt und muss im gegebenenfalls im Linkerscript geändert werden.
  
 
==== Destruktoren (mit --enable-__cxa_atexit oder mit -fuse-cxa-atexit) ====
 
==== Destruktoren (mit --enable-__cxa_atexit oder mit -fuse-cxa-atexit) ====