eigens standard new



  • hi

    mit malloc kann ich ja z.B. folgendes tun

    #define malloc          my_malloc
    #define realloc         my_realloc
    #define free            my_free
    
    int main(int argc, char* argv[])
    {
        char* mt = (char*)malloc(100);  //Hier wird nun my_malloc aufgerufen...
        free(mt);
    
        return 0;
    }
    

    kann ich sowas auch mit new machen???

    also

    int main(int argc, char* argv[])
    {
        char* mt = new char[100]; // hier soll nun mein eignes new aufgerufen werden
            delete [] mt; // hier soll nun mein eignes delete aufgerufen werden
        return 0;
    }
    

    schonmal danke!



  • Der Precompiler würde das new mit my_new ersetzen bevor es der Compiler zu sehen bekommt. -> Also ja.

    In der MFC ist das z.B. so geregelt wenn es um eine debug Version des op new geht.



  • einfach den operator new neu schreiben

    #include <cstddef>
    
    void *operator new(std::size_t n) {
      return ::operator new(n);
    }
    
    void operator delete(void *type) {
      ::operator delete(type);
    }
    


  • Original erstellt von kingruedi:
    **einfach den operator new neu schreiben

    #include <cstddef>
    
    void *operator new(std::size_t n) {
      return ::operator new(n);
    }
    
    void operator delete(void *type) {
      ::operator delete(type);
    }
    

    **

    so funzt es nicht...
    dadurch ruf ich mich immer wieder selber auf!

    aber hab ne lösung gefunden...
    danke



  • Könntest du diese auch preisgeben?



  • void *operator new(size_t size)
    {
        printf("new(%i)\n", size);
        return my_alloc(size);
    }
    
    void operator delete(void* block)
    {
        printf("delete(%08x)\n", block);
        my_free(block);
    }
    

Anmelden zum Antworten