IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage C++ Discussion :

Compiler la surcharge de l'op�rateur new


Sujet :

Langage C++

  1. #1
    Nouveau candidat au Club
    Inscrit en
    Juin 2010
    Messages
    1
    D�tails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 1
    Par d�faut Compiler la surcharge de l'op�rateur new
    Bonjour � tous,

    Je veux surcharger tous mes op�rateurs new pour pouvoir stocker dans une structure toutes les allocations de m�moire. Bien �videment pour qu'il y ai un int�r�t, je fais la m�me chose avec delete.

    Bref venons au fait, j'ai trouv� pas mal de code identique � ce que j'ai pr�par�:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    dans le .h
    #include <cstddef>
     
    void* operator new (size_t sStruct, const char* sFichier, int iLigne);
    void* operator new [] (size_t sStruct, const char* sFichier, int iLigne);
     
    //#define new new(__FILE__,__LINE__)
    #define new DEBUG_NEW
    #define DEBUG_NEW new(__FILE__,__LINE__)
     
    dans le .cpp
    void * operator new (size_t sStruct, const char* cFichier, int iLigne)
    { malloc ... blablabla }
     
    void* operator new[] (size_t sStruct, char* cFichier, int iLigne)
    { blablabla ... free }
    Tel quel, j'ai l'erreur suivante:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    g++  -g    -D_LINUX   -I/home/xxx/Fonctions/ -I/usr/dt/include -I/usr/openwin/include  -c -o Out/memory.cpp.o  /home/xxx/Fonctions/memory.cpp
    > memory.cpp:4: erreur: declaration of 'operator new' as non-function
    Si j'enl�ve les param�tres const char* sFichier et int iLigne, je n'ai aucun probl�me particulier de compilation. Toutefois, pour que mon code ai un int�r�t il faut absolument que je vois o� sont allou�s les �l�ments.

    Suite � quelques recherches sur le net, j'avais rajout� #include <cstddef>. De plus, j'ai trouv� de nombreuses r�f�rences � #define new DEBUG_NEW
    #define DEBUG_NEW new(__FILE__,__LINE__)
    Ca devrait fonctionner comme partout. Mais pas chez moi. Pourquoi et que changer?

    D'avance, Merci

    PS: Je suis sous Unix: gcc-4.1.2

  2. #2
    R�dacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par d�faut
    Salut et bienvenu,
    Les #define d�fini � la fin du .h :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    #define new DEBUG_NEW
    #define DEBUG_NEW new(__FILE__,__LINE__)
    viennent perturber la d�finition de la fonction dans le .cpp :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    void * operator new (size_t sStruct, const char* cFichier, int iLigne)
    { malloc ... blablabla }
    // devient après le preprocessing : 
    void * operator new("memory.cpp",10) (size_t sStruct, const char* cFichier, int iLigne)
    Cf Les op�rateurs new, new[], delete et delete[] dans le tuto de Laurent Gomilla. Tu remarqueras que les fonctions sont inline et redirigent vers l'impl�mentation effective dans un objet allocateur.

Discussions similaires

  1. Surcharge de l'op�rateur new
    Par asaleth dans le forum C++
    R�ponses: 9
    Dernier message: 30/03/2015, 21h18
  2. Surcharge de l'op�rateur new
    Par :Bronsky: dans le forum C++
    R�ponses: 17
    Dernier message: 27/10/2010, 21h33
  3. surcharger l'op�rateur NEW
    Par spiner900 dans le forum Langage
    R�ponses: 2
    Dernier message: 22/04/2010, 16h38
  4. R�ponses: 2
    Dernier message: 17/10/2009, 20h49
  5. Surcharge de l'op�rateur new
    Par asoka13 dans le forum C++
    R�ponses: 4
    Dernier message: 09/05/2008, 12h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo