operator new fuer VCL-Klassen ueberladen
-
Hallo,
ich will den operator new fuer eine VCL-Klasse (in einer Form) ueberladen. Fuer
den op delete funktioniert das auch, aber der Code fuer den op new wird nicht
uebersetzt.Ist es vielleicht nicht moeglich den op new fuer VCL-Klassen zu ueberladen?
mfg
v R
-
ganz dumme Frage: Wozu?
-junix
-
junix schrieb:
ganz dumme Frage: Wozu?
-junix
Weil ich was mit einem von mir geschriebenen allocator ausprobieren will.
mfg
v R
-
Was heisst "wird nicht übersetzt"? Fehlermeldungen?
-
junix schrieb:
Was heisst "wird nicht übersetzt"? Fehlermeldungen?
Nein, gar keine. Der Code geht durch, nur ist es so als wenn der Code
ueberhaupt nicht da waere. Das sieht man ja sehr schoen beim Debuggen.
Dann tauchen bei allen Zeilen, welche angesprungen werden koennen,
kleine blaue Punkte auf. Die sind beim op delete auch vorhanden, aber
nicht beim op new und dort kann ich auch keinen gueltigen Breakpoint
setzen.Als wenn der Code vom op new schlicht und einfach uebersprungen und
nicht uebersetzt wird.mfg
v R
-
Vielleicht hilft Dir ja das weiter ...
-
Peter schrieb:
Vielleicht hilft Dir ja das weiter ...
In wiefern soll mir das weiterhelfen?
Mir ist schon klar, wie ich den op new ueberlade. Was mich aber wundert ist,
dass der bcb meinen op new nicht uebersetzt und den Code offentsichtlich
uebergeht.mfg
v R
-
virtuell Realisticer schrieb:
In wiefern soll mir das weiterhelfen?
Hmpf, sorry, so gehts, wenn man schnell schnell zwischendurch was machen will und dann wieder mit anderen Sachen zugeknallt wird ...
Konnte es jetzt grad auch mal ausprobieren (BCB6), geht auch bei mir ums Verrecken nicht
-
Danke, dass du es mal ausprobiert hast.
Da hat Borland wahrscheinlich mal wieder ihren eigenen schei* gebacken. Kann man
wohl nichts dran aendern.mfg
v R
-
Habs mit allen möglichen Einstellungen probiert, wenn man z.B. 'C++ Compilierung erzwingen' (oder so ähnlich) einstellt, sieht der Aufruf in Assembler (Debugger) etwas anderst aus, aber das "eigene new" wird nicht angefasst, auch 'MFC Kompatibilität' nutzte nix ...
Bin sowieso dabei, mich so langsam nach einer Alternnative zum BCB umzusehen nachdem der BCBX keinen so guten Eindruck bei mir hinterlassen hat. VC++ wird es aber wohl nicht werden
-
<a href= schrieb:
Borland Newsgroups">If you are inheriting from a VCL class, the order that constructors
get called in is firstly the VCL class you inherit from, then the VCL
base classes, then your own C++ base class, followed by the next C++
derived class if any ... up to the most derived C++ class. Built in
VCL classes are written in object pascal and are already compiled into
executable code that is never recompiled on your computer, so if those
classes do any dynamic memory allocation themselves they won't call
your version of new - however, there is a thing called
TMemoryManager that you may be able to use that allows you to redirect
calls to get memory - look it up in the help.
-
Danke Jansen, das werde ich mir mal anschauen.
mfg
v R
-
Also ich hab mir jetzt mal TMemoryManager/Get-/SetMemoryManager etc. angeschaut
und muss leider feststellen, dass es mich ueberhaupt nicht weiterbringt.TMemoryManager::GetMem und TMemoryManager::FreeMem ersetzen, so wie es ausschaut,
durch aufruf der SetMemoryManager-Funktion lediglich den globalen op new/delete,
was mich in eine Endlosschleife bringt, da ich in meinem Allocator den globalen
op new calle.Somit ist das Thema also erledigt und ich reg mich wieder auf, warum Borland hier
mal wieder ihren eigenen Mist gebacken haben
mfg
v RPS: Danke fuer eure Hilfe!