Autor Thema: new Operator  (Gelesen 2020 mal)

Hauke

  • Beiträge: 113
    • Profil anzeigen
Gespeichert
« am: 09. February 2010, 12:07 »
Hallo

Ich wollte mal fragen, wie man den new Operator (und delete wohl auch) implementieren kann (K* = new K(...)), der Linker (ld) hat mir schon gesagt, dass die funktion _Znwm implementiert werden muss. (also dass er die Funktion _Znwm nicht gefunden hat).
Das funktioniert ja denke ich mal ähnlich wie bei den Statischen Construktor.

extern void(*_CTOR_LIST__)();
void(**constructor)() = &_CTOR_LIST__;
int total = *(int*)constructor;
constructor++;
while(total != 0)
{
(*constructor)();
total--;
constructor++;
}

Aber, wie ich das genau machen muss, weis ich nicht.

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #1 am: 09. February 2010, 14:10 »
siehe wiki, insofern hat es nichts mit den Kon/Destruktoren zu tun, es ruft einfach nur deinen Allokator auf und gibt das Stück Speicher zurück. Der Aufrufer von new konstruiert dann das Objekt selbst.
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

Hauke

  • Beiträge: 113
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 11. February 2010, 14:23 »
OK Danke erst einmal,
ich muss jetzt mal schauen, wie ich das einbaue.

 

Einloggen