operator new fuer VCL-Klassen ueberladen



  • 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 R

    PS: Danke fuer eure Hilfe!


Anmelden zum Antworten