Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: Hauke am 09. February 2010, 12:07

Titel: new Operator
Beitrag von: Hauke 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.
Titel: Re: new Operator
Beitrag von: bluecode am 09. February 2010, 14:10
siehe wiki (http://lowlevel.brainsware.org/wiki/index.php/C%2B%2B#new.2Fdelete), 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.
Titel: Re: new Operator
Beitrag von: Hauke am 11. February 2010, 14:23
OK Danke erst einmal,
ich muss jetzt mal schauen, wie ich das einbaue.