hi,
ich schreibe gerade an einem speichermanagement. soweit kann ich den reservierten speicher überwachen und auch wieder löschen.
für das überladen habe ich den new-operator einfach mehrere male überladen. ein problem hatte ich hier allerdings, ich wollte den originalen dennoch beibehalten. das ließ sich recht leicht lösen, indem ich einfach nen extra parameter dran gehauen habe, der jetzt zwar irgendwie keinen sinn hat, aber so kann ich gezielt nur meinen ansprechen:
|
C-/C++-Quelltext
|
1
|
void* operator new(unsigned int _bytes, const bool& _hawkEngine);
|
das freigeben mache ich aber noch per funktionsaufruf des managers, der dann intern die "free" funktion aufruft. hierbei entsteht jetzt das problem, dass der destruktor der objekte nicht aufgerufen wird, was ich dann per hand machen muss. ich muss sagen, das nervt
.
jetzt habe ich mir gedacht, nehmen wir doch einfach das gegenstück zu der oben gezeigten new überladung:
|
C-/C++-Quelltext
|
1
|
void operator delete(void* _mem, const bool& _hawkEngine);
|
soweit ist das ganze auch compilier fähig, solange ich den operator nicht nutzen. sobald ich dies tue, bekomme ich nen error, der ungefähr folgendes beinhaltet:
"es können nur zeiger auf objekte/vars gelöscht werden". dies ist jetzt mein momentanes problem, da ich auch gerne den alten delete operator beibehalten würde, aber keine idee habe, wie man dies nun löst :?
evtl hat ja einer von euch nen einfall/verbesserungsvroschlag oder sonstiges in diese richtung...
ich bedanke mich jetzt schon recht herzlich für kommende vorschläge