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

C++ Discussion :

Surdéfinition de new et delete


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 18
    Par défaut Surdéfinition de new et delete
    Bonjour !!!! J'ai un petit soucis avec la redéfinition de mes opérateur new et delete. En fait j'ai repris le systeme de memory manager de Loulou engine.
    le probleme est que lorsque je compile jai des link error a propos de redéfinition de fonction appartenant a la std

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
    Game Specific error LNK2005: "protected: void __thiscall std::ios_base::_Init(void)" (?_Init@ios_base@std@@IAEXXZ) already defined in msvcprtd.lib(MSVCP71D.dll)
    Game Specific error LNK2005: "public: __thiscall std::_Locinfo::_Locinfo(char const *)" (??0_Locinfo@std@@QAE@PBD@Z) already defined in msvcprtd.lib(MSVCP71D.dll)
    Game Specific error LNK2005: "public: __thiscall std::_Locinfo::~_Locinfo(void)" (??1_Locinfo@std@@QAE@XZ) already defined in msvcprtd.lib(MSVCP71D.dll)
    Game Specific error LNK2005: "public: __thiscall std::_Lockit::_Lockit(int)" (??0_Lockit@std@@QAE@H@Z) already defined in Globals.lib(MemoryManager.obj)
    Game Specific error LNK2005: "public: __thiscall std::_Lockit::~_Lockit(void)" (??1_Lockit@std@@QAE@XZ) already defined in Globals.lib(MemoryManager.obj)
    Game Specific error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::~basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(void)" (??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ) already defined in Globals.lib(MemoryManager.obj)
    Game Specific error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(char const *)" (??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD@Z) already defined in Globals.lib(MemoryManager.obj)
    Game Specific error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@@Z) already defined in Globals.lib(MemoryManager.obj)
    Game Specific error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(unsigned int,char)" (??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ID@Z) already defined in Globals.lib(MemoryManager.obj)
    Game Specific error LNK2005: "public: __thiscall std::locale::~locale(void)" (??1locale@std@@QAE@XZ) already defined in Globals.lib(MemoryManager.obj)
    Game Specific error LNK2005: "public: __thiscall std::locale::id::operator unsigned int(void)" (??Bid@locale@std@@QAEIXZ) already defined in Globals.lib(MemoryManager.obj)
    Game Specific error LNK2005: "public: __thiscall std::locale::locale(void)" (??0locale@std@@QAE@XZ) already defined in msvcprtd.lib(MSVCP71D.dll)
    Game Specific error LNK2005: "public: bool __thiscall std::ios_base::good(void)const " (?good@ios_base@std@@QBE_NXZ) already defined in Globals.lib(MemoryManager.obj)
    Game Specific error LNK2005: "public: char __thiscall std::basic_ios<char,struct std::char_traits<char> >::fill(void)const " (?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDXZ) already defined in Globals.lib(MemoryManager.obj)
    Game Specific error LNK2005: "public: char __thiscall std::basic_ios<char,struct std::char_traits<char> >::widen(char)const " (?widen@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDD@Z) already defined in Globals.lib(MemoryManager.obj)
    Game Specific error LNK2005: "public: char const & __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::operator[](unsigned int)const " (??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDI@Z) already defined in Globals.lib(MemoryManager.obj)
    Game Specific error LNK2005: "public: class std::basic_ostream<char,struct std::char_traits<char> > & __thiscall std::basic_ostream<char,struct std::char_traits<char> >::flush(void)" (?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@XZ) already defined in Globals.lib(MemoryManager.obj)
    Game Specific error LNK2005: "public: class std::basic_ostream<char,struct std::char_traits<char> > * __thiscall std::basic_ios<char,struct std::char_traits<char> >::tie(void)const " (?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ) already defined in Globals.lib(MemoryManager.obj)
    Game Specific error LNK2005: "public: class std::basic_streambuf<char,struct std::char_traits<char> > * __thiscall std::basic_ios<char,struct std::char_traits<char> >::rdbuf(void)const " (?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ) already defined in Globals.lib(MemoryManager.obj)
    Game Specific error LNK2005: "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > & __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::append(unsigned int,char)" (?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z) already defined in Globals.lib(MemoryManager.obj)
    Game Specific error LNK2005: "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > & __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::erase(unsigned int,unsigned int)" (?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@II@Z) already defined in Globals.lib(MemoryManager.obj)
    Game Specific error LNK2005: "public: class std::locale __thiscall std::ios_base::getloc(void)const " (?getloc@ios_base@std@@QBE?AVlocale@2@XZ) already defined in Globals.lib(MemoryManager.obj)
    Game Specific error LNK2005: "public: class std::locale::facet const * __thiscall std::locale::_Getfacet(unsigned int)const " (?_Getfacet@locale@std@@QBEPBVfacet@12@I@Z) already defined in msvcprtd.lib(MSVCP71D.dll)
    Game Specific error LNK2005: "public: int __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::sputc(char)" (?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHD@Z) already defined in Globals.lib(MemoryManager.obj)
    Game Specific error LNK2005: "public: int __thiscall std::ios_base::flags(void)const " (?flags@ios_base@std@@QBEHXZ) already defined in Globals.lib(MemoryManager.obj)
    Game Specific error LNK2005: "public: int __thiscall std::ios_base::width(int)" (?width@ios_base@std@@QAEHH@Z) already defined in Globals.lib(MemoryManager.obj)
    Game Specific error LNK2005: "public: int __thiscall std::ios_base::width(void)const " (?width@ios_base@std@@QBEHXZ) already defined in Globals.lib(MemoryManager.obj)
    Game Specific error LNK2005: "public: static bool __cdecl std::char_traits<char>::eq_int_type(int const &,int const &)" (?eq_int_type@?$char_traits@D@std@@SA_NABH0@Z) already defined in Globals.lib(MemoryManager.obj)
    Game Specific error LNK2005: "public: static char __cdecl std::char_traits<char>::to_char_type(int const &)" (?to_char_type@?$char_traits@D@std@@SADABH@Z) already defined in Globals.lib(MemoryManager.obj)
    Game Specific error LNK2005: "public: static int __cdecl std::char_traits<char>::eof(void)" (?eof@?$char_traits@D@std@@SAHXZ) already defined in Globals.lib(MemoryManager.obj)
    Game Specific error LNK2005: "public: static int __cdecl std::char_traits<char>::to_int_type(char const &)" (?to_int_type@?$char_traits@D@std@@SAHABD@Z) already defined in Globals.lib(MemoryManager.obj)
    Game Specific error LNK2005: "public: static unsigned int __cdecl std::ctype<char>::_Getcat(class std::locale::facet const * *)" (?_Getcat@?$ctype@D@std@@SAIPAPBVfacet@locale@2@@Z) already defined in Globals.lib(MemoryManager.obj)
    Game Specific error LNK2005: "public: unsigned int __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::max_size(void)const " (?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ) already defined in Globals.lib(MemoryManager.obj)
    Game Specific error LNK2005: "public: unsigned int __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::size(void)const " (?size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ) already defined in Globals.lib(MemoryManager.obj)
    Game Specific error LNK2005: "public: virtual __thiscall std::ios_base::~ios_base(void)" (??1ios_base@std@@UAE@XZ) already defined in msvcprtd.lib(MSVCP71D.dll)
    Game Specific error LNK2005: "public: void __thiscall std::basic_ios<char,struct std::char_traits<char> >::setstate(int,bool)" (?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z) already defined in Globals.lib(MemoryManager.obj)
    Game Specific error LNK2005: "public: void __thiscall std::basic_ostream<char,struct std::char_traits<char> >::_Osfx(void)" (?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ) already defined in Globals.lib(MemoryManager.obj)
    Game Specific error LNK2005: "public: void __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::_Lock(void)" (?_Lock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ) already defined in Globals.lib(MemoryManager.obj)
    Game Specific error LNK2005: "public: void __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::_Unlock(void)" (?_Unlock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ) already defined in Globals.lib(MemoryManager.obj)
    Game Specific error LNK2005: "public: void __thiscall std::ios_base::_Addstd(void)" (?_Addstd@ios_base@std@@QAEXXZ) already defined in msvcprtd.lib(MSVCP71D.dll)
    Game Specific error LNK2005: "public: void __thiscall std::ios_base::clear(int,bool)" (?clear@ios_base@std@@QAEXH_N@Z) already defined in msvcprtd.lib(MSVCP71D.dll)
    Game Specific error LNK2005: "public: void __thiscall std::locale::facet::_Incref(void)" (?_Incref@facet@locale@std@@QAEXXZ) already defined in Globals.lib(MemoryManager.obj)
    Game Specific error LNK2005: "public: void __thiscall std::locale::facet::_Register(void)" (?_Register@facet@locale@std@@QAEXXZ) already defined in msvcprtd.lib(MSVCP71D.dll)
    Game Specific error LNK2005: "void * __cdecl operator new(unsigned int,struct std::_DebugHeapTag_t const &,char *,int)" (??2@YAPAXIABU_DebugHeapTag_t@std@@PADH@Z) already defined in msvcprtd.lib(MSVCP71D.dll)
    Game Specific error LNK2005: "void * __cdecl operator new[](unsigned int,struct std::_DebugHeapTag_t const &,char *,int)" (??_U@YAPAXIABU_DebugHeapTag_t@std@@PADH@Z) already defined in msvcprtd.lib(MSVCP71D.dll)
    Game Specific error LNK2005: "void __cdecl operator delete(void *,struct std::_DebugHeapTag_t const &,char *,int)" (??3@YAXPAXABU_DebugHeapTag_t@std@@PADH@Z) already defined in msvcprtd.lib(MSVCP71D.dll)
    Game Specific error LNK2005: ___xc_a already defined in MSVCRTD.lib(cinitexe.obj)
    Game Specific error LNK2005: ___xc_z already defined in MSVCRTD.lib(cinitexe.obj)
    Game Specific error LNK2005: ___xi_a already defined in MSVCRTD.lib(cinitexe.obj)
    Game Specific error LNK2005: ___xi_z already defined in MSVCRTD.lib(cinitexe.obj)
    Game Specific error LNK2005: __amsg_exit already defined in MSVCRTD.lib(MSVCR71D.dll)
    Game Specific error LNK2005: __c_exit already defined in MSVCRTD.lib(MSVCR71D.dll)
    Game Specific error LNK2005: __cexit already defined in MSVCRTD.lib(MSVCR71D.dll)
    Game Specific error LNK2005: __CrtDumpMemoryLeaks already defined in MSVCRTD.lib(MSVCR71D.dll)
    Game Specific error LNK2005: __exit already defined in MSVCRTD.lib(MSVCR71D.dll)
    Game Specific error LNK2005: __XcptFilter already defined in MSVCRTD.lib(MSVCR71D.dll)
    Game Specific error LNK2005: _exit already defined in MSVCRTD.lib(MSVCR71D.dll)
    Game Specific error LNK2005: _fflush already defined in MSVCRTD.lib(MSVCR71D.dll)
    Game Specific error LNK2005: _free already defined in MSVCRTD.lib(MSVCR71D.dll)
    Game Specific error LNK2005: _localeconv already defined in MSVCRTD.lib(MSVCR71D.dll)
    Game Specific error LNK2005: _mainCRTStartup already defined in MSVCRTD.lib(crtexe.obj)
    Game Specific error LNK2005: _malloc already defined in MSVCRTD.lib(MSVCR71D.dll)
    Game Specific fatal error LNK1169: one or more multiply defined symbols found
    d:\Romain\Beatle Engine 8\Globals\Core\Core.cpp(45): warning C4390: ';' : empty controlled statement found; is this the intent?
    Game Specific warning LNK4098: defaultlib 'LIBCD' conflicts with use of other libs; use /NODEFAULTLIB:library
    Game Specific warning LNK4098: defaultlib 'MSVCRTD' conflicts with use of other libs; use /NODEFAULTLIB:library
    Voici le code ou je redéfinis les opérateurs.

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    ifdef _DEBUG
     
    #ifndef DEBUGNEWDELETE_H
    #define DEBUGNEWDELETE_H
     
    #include "MemoryManager.h"
     
    inline void* operator new(std::size_t  Size, const char* FileName, int Line)
    {
        return MemoryManager->Allocate((Size), FileName, Line, false);
     
    }
     
    inline void* operator new[](std::size_t Size, const char* FileName, int Line)
    {
        return MemoryManager->Allocate((Size), FileName, Line, true);
    }
     
    inline void operator delete(void* P)
    {
    	MemoryManager->Free(P, false);
    }
     
    inline void operator delete[](void* P)
    {
       MemoryManager->Free(P, true);
    }
     
    inline void operator delete(void* P, const char* FileName, int Line)
    {
    	MemoryManager->NextDelete(FileName, Line);
    	MemoryManager->Free(P, false);
    }
     
    inline void operator delete[](void* P, const char* FileName, int Line)
    {
    	MemoryManager->NextDelete(FileName, Line);
    	MemoryManager->Free(P, true);
    }
     
    #endif
     
    #ifndef new
    	#define new    new(__FILE__, __LINE__)
    	#define delete MemoryManager->NextDelete(__FILE__, __LINE__), delete
    #endif
     
    #endif
    Mais si je met en commentaire ceci : et bien je n'ai plus les link errors

    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
     
    inline void* operator new(std::size_t  Size, const char* FileName, int Line)
    {
        //return MemoryManager->Allocate((Size), FileName, Line, false);
        return NULL;
    }
    inline void operator delete(void* P)
    {
    	//MemoryManager->Free(P, false);
    }
     
    inline void operator delete(void* P, const char* FileName, int Line)
    {
    	//MemoryManager->NextDelete(FileName, Line);
    	//MemoryManager->Free(P, false);
    }
    Pour information il y a entre autre ceci dans le fichier MemoryManager.h

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #include <fstream>
    #include <map>
    #include <stack>
    #include <string>
     
    #define MemoryManager nsMemory::MemoryManager_c::Get_Instance()
    Merci !!!!

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Il semblerait que tu aies un problème au niveau de la CRT. Tous tes projets lient bien avec la même version ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 18
    Par défaut
    Merci beaucoup !!!!! c'était sa.
    ais projet n'avaient pas le meme basic Runtime Checks

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Pense à cliquer sur

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. operator new sans delete
    Par babar63 dans le forum C++
    Réponses: 21
    Dernier message: 26/02/2008, 22h33
  2. Redéfinition opérateurs new et delete globaux
    Par bolhrak dans le forum C++
    Réponses: 8
    Dernier message: 30/07/2007, 11h34
  3. surdefinition operateur new et delete
    Par johjoh dans le forum C++
    Réponses: 23
    Dernier message: 08/12/2006, 10h10
  4. intrigue sur la surcharge du new et delete
    Par swirtel dans le forum C++
    Réponses: 12
    Dernier message: 07/09/2006, 15h23
  5. Segmentation fault sur new[] et delete[]
    Par Don ViP dans le forum C++
    Réponses: 4
    Dernier message: 30/04/2006, 00h29

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