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 :

Fuite de mémoire et utilisation de vecteurs contenant des structures en C contenant des pointeurs


Sujet :

C++

  1. #21
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 79
    Points : 26
    Points
    26
    Par défaut
    J'ai davantage cerné la provenance de la fuite de mémoire : cela vient du constructeur par recopie de Polygone_GPC appelé lors du push_back dans le vecteur. Plus particulièrement de ce morceau :
    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
    namespace 
    	{
    	gpc_polygon* deep_copy(gpc_polygon* p)
    		{	
    		gpc_polygon* cp = NULL;
     
    		if(p!=NULL)
    			{
    			cp = (gpc_polygon*)malloc(sizeof(gpc_polygon));
    			gpc_copy_polygon(cp, p);
    			}
     
    		return cp;
    		}
    	}
    Les memory leaks sont longs de 12 bytes, comme la taille allouée pour chaque "cp". Quelle erreur ai-je commise ?

  2. #22
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Citation Envoyé par regliss76 Voir le message
    Quelle erreur ai-je commis ?
    Tout d'abord, tu as oublié de faire l'accord du participe passé.

    Ensuite, tu utilises malloc. C'est mal. très mal.

    Enfin, où te charges-tu de libérer la mémoire ?

  3. #23
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 79
    Points : 26
    Points
    26
    Par défaut
    Envoyé par regliss76
    Quelle erreur ai-je commis ?

    Tout d'abord, tu as oublié de faire l'accord du participe passé.

    Ensuite, tu utilises malloc. C'est mal. très mal.
    Et toi la majuscule.

    J'utilise malloc car gpc_polygon est une structure C. Polygone_GPC est une classe C++ chargée justement de gérer ce problème de mémoire, d'où le destructeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Polygone_GPC::~Polygone_GPC()
    	{
    	gpc_free_polygon(m_poly);
    	}

  4. #24
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Dans un premier temps, remplace tous tes malloc par MALLOC_DEBUG, tes free par FREE_DEBUG, et ajoute un SHOW_DEBUG_ALLOC() à la fin de ton programme.

    Code my_debug_malloc.h : 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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
     
    #ifndef my_debug_malloc_h
    #define my_debug_malloc_h 
    // décommenter pour débugger les malloc/free
    // #define MY_DEBUG_MALLOC
     
    #include <vector>
    #include <sstream>
    #include <string>
     
    #ifdef MY_DEBUG_MALLOC
     
    #define MALLOC_DEBUG(s) malloc_debug((s), __FILE__, __LINE__)
    #define FREE_DEBUG(p) free_debug(p)
    #define SHOW_DEBUG_ALLOC() do { show_debug_alloc(); } while (0)
     
    class allocation 
    {
    private:
      void* m_p;
      std::size_t m_length;
      std::string m_file;
      int m_line;
    public:
      allocation() : m_p(NULL), m_length(0), m_line(0) { }
      allocation(const allocation& other)
        : m_p(other.m_p)
        , m_length(other.m_length)
        , m_file(other.m_file)
        , m_line(other.m_line)
      { }
      void swap(allocation& other)
      {
        std::swap(m_p, other.m_p);
        std::swap(m_length, other.m_length);
        m_file.swap(other.m_file);
        std::swap(m_line, other.m_line);
      }
      allocation& operator=(const allocation& other)
      {
        allocation(other).swap(*this);
        return *this;
      }
      const p* pointer() const { return m_p; }
      const std::string& filename() const { return m_file; }
      std::size_t length() const { return m_length; }
      int line() const { return m_line; }
    };
     
    inline std::vector<allocation>& get_allocations()
    {
      static std::vector<allocation> allocations;
      return allocations;
    }
     
    inline void *malloc_debug(std::size_t length, const char* filename, int line)
    {
      void* p = malloc(length);
      get_allocations().push_back(allocation(p, length, filename, line));
      return p;
    }
     
    inline void free_debug(void* p)
    {
      std::vector<allocation>::iterator it;
      it = std::find_if(get_allocations().begin(), get_allocations().end(), allocation_comp(p));
      if (it == get_allocations().end()) {
        get_allocations().erase(it);
      }
      free(p);
    }
     
    inline show_debug_alloc()
    {
      std::vector<allocation>& allocs = get_allocations();
      for (std::size_t i=0; i<allocs.size(); ++i) {
        std::stringstream out; 
        out << "p = " << allocs[i].pointer() << "of size " << allocs[i].length() << 
          " allocated in file " << 
          allocs[i].filename() << " line " << allocs[i].line() << std::endl;
       SOME_DISPLAY_FUNCTION(out.c_str());
      }
    }
     
    #else
    #define MALLOC_DEBUG(s) malloc(s)
    #define FREE_DEBUG(p) free(p)
    #define SHOW_DEBUG_ALLOC()
    #endif
     
    #endif // my_debug_malloc_h

    Exemple:
    Code main.c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #include <stdlib.h>
    #include "my_debug_malloc.h"
     
    int main()
    {
      char *p1 = MALLOC_DEBUG(10);
      char *p2 = MALLOC_DEBUG(20);
     
      MALLOC_FREE(p2);
     
      SHOW_DEBUG_ALLOC();
    }

    Devrait afficher la ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    p = xxxxxxx allocated in file main.c line 6

  5. #25
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 79
    Points : 26
    Points
    26
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    1>d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\my_debug_malloc.h(43) : error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut
    1>d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\my_debug_malloc.h(43) : error C2143: erreur de syntaxe*: absence de ';' avant '*'
    1>d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\my_debug_malloc.h(43) : error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut
    1>d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\my_debug_malloc.h(43) : warning C4183: 'pointer'*: type de retour manquant*; fonction membre retournant 'int' prise par défaut
    1>d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\my_debug_malloc.h(24) : error C2758: 'allocation::p'*: doit être initialisé(e) dans la liste des initialiseurs base/membre du constructeur
    1>        d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\my_debug_malloc.h(43)*: voir la déclaration de 'allocation::p'
    1>d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\my_debug_malloc.h(30) : error C2758: 'allocation::p'*: doit être initialisé(e) dans la liste des initialiseurs base/membre du constructeur
    1>        d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\my_debug_malloc.h(43)*: voir la déclaration de 'allocation::p'
    1>d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\my_debug_malloc.h(43) : error C2440: 'return'*: impossible de convertir de 'void *const ' en 'int *'
    1>        La conversion de 'void*' en pointeur vers non 'void' nécessite un cast explicite
    1>d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\my_debug_malloc.h(58) : error C2661: 'allocation::allocation'*: aucune fonction surchargée ne nécessite 4 arguments
    1>d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\my_debug_malloc.h(65) : error C3861: 'allocation_comp'*: identificateur introuvable
    1>d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\my_debug_malloc.h(73) : error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut
    1>d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\my_debug_malloc.h(80) : error C2039: 'c_str'*: n'est pas membre de 'std::basic_stringstream<_Elem,_Traits,_Alloc>'
    Ouch... En ayant modifié/ajouté quelques trucs :
    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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    #ifndef my_debug_malloc_h
    #define my_debug_malloc_h 
    // décommenter pour débugger les malloc/free
    #define MY_DEBUG_MALLOC
     
    #include <vector>
    #include <sstream>
    #include <string>
     
    #ifdef MY_DEBUG_MALLOC
     
    #define MALLOC_DEBUG(s) malloc_debug((s), __FILE__, __LINE__)
    #define FREE_DEBUG(p) free_debug(p)
    #define SHOW_DEBUG_ALLOC() do { show_debug_alloc(); } while (0)
     
    class allocation 
    {
    private:
     
      void* m_p;
      std::size_t m_length;
      std::string m_file;
      int m_line;
     
    public:
     
      allocation() : m_p(NULL), m_length(0), m_line(0) { }
      allocation(void * p, std::size_t length, std::string filename, int line) : m_p(p), m_length(length), m_line(line) { }
      allocation(const allocation& other)
        : m_p(other.m_p)
        , m_length(other.m_length)
        , m_file(other.m_file)
        , m_line(other.m_line)
      { }
     
      void swap(allocation& other)
      {
        std::swap(m_p, other.m_p);
        std::swap(m_length, other.m_length);
        m_file.swap(other.m_file);
        std::swap(m_line, other.m_line);
      }
     
      allocation& operator=(const allocation& other)
      {
        allocation(other).swap(*this);
        return *this;
      }
     
      const void* pointer() const { return m_p; }
      const std::string& filename() const { return m_file; }
      std::size_t length() const { return m_length; }
      int line() const { return m_line; }
    };
     
    inline std::vector<allocation>& get_allocations()
    {
      static std::vector<allocation> allocations;
      return allocations;
    }
     
    inline void *malloc_debug(std::size_t length, const char* filename, int line)
    {
      void* p = malloc(length);
      get_allocations().push_back(allocation(p, length, filename, line));
      return p;
    }
     
    inline void free_debug(void* p)
    {
      std::vector<allocation>::iterator it;
      it = std::find_if(get_allocations().begin(), get_allocations().end(), allocation_comp(p));
      if (it == get_allocations().end()) {
        get_allocations().erase(it);
      }
      free(p);
    }
     
    inline show_debug_alloc()
    {
      std::vector<allocation>& allocs = get_allocations();
      for (std::size_t i=0; i<allocs.size(); ++i) {
      std::stringstream out; 
        out << "p = " << allocs[i].pointer() << "of size " << allocs[i].length() << 
          " allocated in file " << 
          allocs[i].filename() << " line " << allocs[i].line() << std::endl;
    	SOME_DISPLAY_FUNCTION(out.str());
      }
    }
     
    #else
    #define MALLOC_DEBUG(s) malloc(s)
    #define FREE_DEBUG(p) free(p)
    #define SHOW_DEBUG_ALLOC()
    #endif
     
    #endif // my_debug_malloc_h
    j'arrive à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    1>d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\my_debug_malloc.h(72) : error C3861: 'allocation_comp'*: identificateur introuvable
    1>d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\my_debug_malloc.h(80) : error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut
    1>d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\my_debug_malloc.h(87) : error C3861: 'SOME_DISPLAY_FUNCTION'*: identificateur introuvable
    1>d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\my_debug_malloc.h(89) : warning C4508: 'show_debug_alloc'*: la fonction doit retourner une valeur*; type de retour 'void' pris par défaut

  6. #26
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Oui, il y a quelques erreurs ; en même temps, j'ai fait ça à main levée, pendant que je débugais un module kernel un poil étrange pour Linux. J'ai pu rater quelques petits trucs

    1/ allocation_comp:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    struct allocation_comp
    {
       allocation_comp(void *p) : m_p(p) { }
       bool operator()(const allocation& a)
       { return a.pointer() == p; }
    };
    2/ et 4/ ligne 79 ==> inline void show_debug_alloc()

    3/ SOME_DISPLAY_FUNCTION est quelque chose que tu dois écrire. Selon ton OS et le type de sous-système (console, GUI, ...), ça peut être std::cout << out.str() ou OutputDebugString(out.str().c_str()), etc.

    A toi de voir.

  7. #27
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 79
    Points : 26
    Points
    26
    Par défaut
    Merci pour ton aide.
    Ca donne ça :
    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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    #ifndef my_debug_malloc_h
    #define my_debug_malloc_h 
    // décommenter pour débugger les malloc/free
    #define MY_DEBUG_MALLOC
     
    #include <vector>
    #include <sstream>
    #include <string>
     
    #ifdef MY_DEBUG_MALLOC
     
    #define MALLOC_DEBUG(s) malloc_debug((s), __FILE__, __LINE__)
    #define FREE_DEBUG(p) free_debug(p)
    #define SHOW_DEBUG_ALLOC() do { show_debug_alloc(); } while (0)
     
    class allocation 
    {
    private:
     
      void* m_p;
      std::size_t m_length;
      std::string m_file;
      int m_line;
     
    public:
     
      allocation() : m_p(NULL), m_length(0), m_line(0) { }
      allocation(void * p, std::size_t length, std::string filename, int line) : m_p(p), m_length(length), m_line(line) { }
      allocation(const allocation& other)
        : m_p(other.m_p)
        , m_length(other.m_length)
        , m_file(other.m_file)
        , m_line(other.m_line)
      { }
     
      void swap(allocation& other)
      {
        std::swap(m_p, other.m_p);
        std::swap(m_length, other.m_length);
        m_file.swap(other.m_file);
        std::swap(m_line, other.m_line);
      }
     
      allocation& operator=(const allocation& other)
      {
        allocation(other).swap(*this);
        return *this;
      }
     
      const void* pointer() const { return m_p; }
      const std::string& filename() const { return m_file; }
      std::size_t length() const { return m_length; }
      int line() const { return m_line; }
     
     
    };
     
    struct allocation_comp
    {
       void* m_p;
       allocation_comp(void *p) : m_p(p) { }
       bool operator()(const allocation& a)
       { return a.pointer() == m_p; }
    };
     
    inline std::vector<allocation>& get_allocations()
    {
      static std::vector<allocation> allocations;
      return allocations;
    }
     
    inline void *malloc_debug(std::size_t length, const char* filename, int line)
    {
      void* p = malloc(length);
      get_allocations().push_back(allocation(p, length, filename, line));
      return p;
    }
     
    inline void free_debug(void* p)
    {
      std::vector<allocation>::iterator it;
      it = std::find_if(get_allocations().begin(), get_allocations().end(), allocation_comp(p));
      if (it == get_allocations().end()) {
        get_allocations().erase(it);
      }
      free(p);
    }
     
    inline void show_debug_alloc()
    {
      std::vector<allocation>& allocs = get_allocations();
      for (std::size_t i=0; i<allocs.size(); ++i) {
      std::stringstream out; 
        out << "p = " << allocs[i].pointer() << "of size " << allocs[i].length() << 
          " allocated in file " << allocs[i].filename() << " line " << allocs[i].line() << std::endl;
    	std::cout << out.str(); 
      }
    }
     
    #else
    #define MALLOC_DEBUG(s) malloc(s)
    #define FREE_DEBUG(p) free(p)
    #define SHOW_DEBUG_ALLOC()
    #endif
     
    #endif // my_debug_malloc_h
    Par contre le fait que j'ajoute my_debug_malloc.h dans ma bib. C (ie dans gpc.h) me donne ceci :
    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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    1>Génération de code en cours...
    1>Compilation en cours...
    1>gpc.c
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(39) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(39) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(41) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(41) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(41) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(41) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(41) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(41) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(42) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(42) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(42) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(42) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(42) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(42) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(43) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(43) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(43) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(43) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(43) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(43) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(44) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(44) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(44) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(44) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(44) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(44) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(45) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(45) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(45) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(45) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(45) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(45) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(46) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(46) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(46) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(46) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(46) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(46) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(47) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(47) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(47) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(47) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(47) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(47) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(48) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(48) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(48) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(48) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(48) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(48) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(49) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(49) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(49) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(49) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(50) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(50) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(50) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(50) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(51) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(51) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(51) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(51) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(51) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(51) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(52) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(52) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(52) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(52) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(52) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(52) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(53) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(53) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(53) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(53) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(53) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(53) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(54) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(54) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(54) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(54) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(54) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(54) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(55) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(55) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(55) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(55) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(55) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(55) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(56) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(56) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstring(19) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstring(19) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstring(19) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstring(19) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstring(19) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstring(19) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstring(21) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstring(21) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstring(21) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstring(21) : error C2059: erreur de syntaxe*: ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstring(21) : error C2143: erreur de syntaxe*: absence de '{' avant ':'
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstring(21) : fatal error C1003: le nombre d'erreurs est supérieur à 100*; arrêt de la compilation
    1>Le journal de génération a été enregistré à l'emplacement "file://d:\Data\Développement\Visual Studio 2008\NBDMtoIFC\NBDMtoIFC_0100048\NBDMtoIFC_lib\Debug\BuildLog.htm"
    1>NBDMtoIFC_lib - 102 erreur(s), 2 avertissement(s)
    ...

  8. #28
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 79
    Points : 26
    Points
    26
    Par défaut
    J'ai spécifié "compiler gpc.c comme fichier C++" pour que cela marche...
    J'ai rajouté les include iostream et algorithm qui étaient nécessaires, et corrigé le test sur le résultat de la recherche sur les allocs faite dans free_debug (!= et non ==) :

    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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    #ifndef my_debug_malloc_h
    #define my_debug_malloc_h 
    // décommenter pour débugger les malloc/free
    #define MY_DEBUG_MALLOC
     
    #include <vector>
    #include <sstream>
    #include <string>
    #include <algorithm>
    #include <iostream>
     
    #ifdef MY_DEBUG_MALLOC
     
    #define MALLOC_DEBUG(s) malloc_debug((s), __FILE__, __LINE__)
    #define FREE_DEBUG(p) free_debug(p)
    #define SHOW_DEBUG_ALLOC() do { show_debug_alloc(); } while (0)
     
    class allocation 
    {
    private:
     
      void* m_p;
      std::size_t m_length;
      std::string m_file;
      int m_line;
     
    public:
     
      allocation() : m_p(NULL), m_length(0), m_file(""), m_line(0) { }
      allocation(void * p, std::size_t length, std::string filename, int line) : m_p(p), m_length(length), m_file(filename), m_line(line) {}
      allocation(const allocation& other)
        : m_p(other.m_p)
        , m_length(other.m_length)
        , m_file(other.m_file)
        , m_line(other.m_line)
      { }
     
      void swap(allocation& other)
      {
        std::swap(m_p, other.m_p);
        std::swap(m_length, other.m_length);
    	std::swap(m_file,other.m_file);
        std::swap(m_line, other.m_line);
      }
     
      allocation& operator=(const allocation& other)
      {
        allocation(other).swap(*this);
        return *this;
      }
     
      const void* pointer() const { return m_p; }
      const std::string& filename() const { return m_file; }
      std::size_t length() const { return m_length; }
      int line() const { return m_line; }
     
     
    };
     
    struct allocation_comp
    {
       void* m_p;
       allocation_comp(void *p) : m_p(p) { }
       bool operator()(const allocation& a)
       { return a.pointer() == m_p; }
    };
     
    inline std::vector<allocation>& get_allocations()
    {
      static std::vector<allocation> allocations;
      return allocations;
    }
     
    inline void *malloc_debug(std::size_t length, const char* filename, int line)
    {
      void* p = malloc(length);
      get_allocations().push_back(allocation(p, length, (std::string)filename, line));
      return p;
    }
     
    inline void free_debug(void* p)
    {
    std::vector<allocation>::iterator it; 
      it = std::find_if(get_allocations().begin(), get_allocations().end(), allocation_comp(p));
      if (it != get_allocations().end()) {
        get_allocations().erase(it);
      }
      free(p);
    }
     
    inline void show_debug_alloc()
    {
      std::vector<allocation>& allocs = get_allocations();
      for (std::size_t i=0; i<allocs.size(); ++i) {
      std::stringstream out; 
        out << "p = " << allocs[i].pointer() << "of size " << allocs[i].length() << 
          " allocated in file " << allocs[i].filename() << " line " << allocs[i].line() << std::endl;
    	std::cout << out.str(); 
    	  } 
    }
     
    #else
    #define MALLOC_DEBUG(s) malloc(s)
    #define FREE_DEBUG(p) free(p)
    #define SHOW_DEBUG_ALLOC()
    #endif
     
    #endif // my_debug_malloc_h
    J'obtiens bien les mêmes types de memory leaks que dans ma fenêtre de sortie VS :
    Code x : 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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    Conversion de fichiers NBDM en fichiers IFC
    
    Fichier NBDM en cours de conversion : D:\Data\Développement\Visual Studio 2008\NBDMtoIFC\NBDMtoIFC_0100048\\data\Felling.nbdm
    
    Fichier IFC écrit avec succès dans : D:\Data\Développement\Visual Studio 2008\NBDMtoIFC\NBDMtoIFC_0100048\\data\Felling.ifc
    p = 046E0FC0of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 0041AA20of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 04722178of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003F5758of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 0040E5A0of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00426320of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003F56B8of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003F57F8of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003F3D70of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003F1B48of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003F31B8of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 004263C0of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003F41A0of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003F5568of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003F0BF8of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00424FF0of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003F0D48of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 0040E3F8of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003F03D8of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003EF7B0of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003F6A20of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003F06B8of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003F6AC0of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003EA0E0of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003ED0A0of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003F0040of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003F67E8of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003E9F40of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003F6C10of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003E9D90of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003DC238of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003DC660of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003DC2D8of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003DAE28of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003DC378of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00B05EC0of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003E9020of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00B05D70of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003DC140of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003DAA68of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003E0A78of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003E25F8of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003E23F0of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003D5980of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00B05B78of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00B05C18of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003DF1C8of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003D3708of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 047ACD78of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003DF268of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003DD908of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003D5888of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003D4F80of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00B02CC8of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003D5128of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003DD528of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003DFBF0of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003DD810of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00B06248of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003D9150of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00B055D8of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003D9370of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00B05678of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003D8DE0of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00B09998of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00B07390of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00B09A90of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 047B32A0of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003D2BC0of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00B098A0of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003D2CB0of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003D74E0of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00B07430of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00B068C8of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00B067D8of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00B03CC0of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 003D2AC8of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00B0B388of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00B03D60of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00B047E0of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00B03BC8of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00AFE1C0of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00B00750of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00B0B020of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00B0BC38of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00B0B290of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00AFF228of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00B0AF30of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00AFE430of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00AFF2C8of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00B01058of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00AFE780of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00B00858of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00AFCD30of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00AFD8A8of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00AF0278of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00AF0180of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00AF0510of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00AEED30of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00AEBD60of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00AE44E8of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00AE8890of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00B0F430of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00AE83E0of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00AEBEA0of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00AE9888of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00AEBE00of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00B10648of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00B106E8of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00AE42C0of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00AE3A50of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00B0BD30of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 047B3C08of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00B0BDD0of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00AE7168of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00AEA760of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00B10058of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00B0E2B0of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00AE7908of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00AE9028of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00AE4660of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00AE0738of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00AEA670of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00AEA528of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00AE1580of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00AE0640of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00AE2728of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00AE2A70of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00AE4FE0of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00AEB680of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00AE1E88of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00AE1F28of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00ADFB48of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00AE01E8of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00ADC850of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00ADFE08of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00AD95D8of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00ADEB58of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00ADDD50of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00ADC8F0of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00ADFEA8of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00AD9678of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00ADEBF8of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 00ADCDA8of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    p = 047BCFC0of size 12 allocated in file d:\data\développement\visual studio 2008\nbdmtoifc\nbdmtoifc_0100048\nbdmtoifc_lib\polygone_gpc.cpp line
     18
    Appuyez sur une touche pour continuer...

  9. #29
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 79
    Points : 26
    Points
    26
    Par défaut Fuite de mémoire (suite)
    Mes memory leaks, donc... la zone allouée non libérée est ici :
    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
    namespace 
        {
        gpc_polygon* deep_copy(gpc_polygon* p)
            {    
            gpc_polygon* cp; 
     
            if(p==NULL)
                {
                cp = NULL;
                }
     
            else
                {
                cp = (gpc_polygon*)MALLOC_DEBUG(sizeof(gpc_polygon)); // <---- là
                gpc_copy_polygon(cp, p);
                }
     
            return cp;
            }
        }
    Je ne comprends pas pourquoi elle n'est pas libérée, je passe bien par la suite par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Polygone_GPC::~Polygone_GPC()
        {
        gpc_free_polygon(m_poly);
        }
    avec m_poly ayant la même adresse que cp.
    Dois-je rajouter un free sur m_poly ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Polygone_GPC::~Polygone_GPC()
        {
        gpc_free_polygon(m_poly);
        FREE_DEBUG(m_poly);
        }
    Ce code buggue impossible de faire ...

    C'est vraiment l'ensemble de la gestion de la mémoire allouée pour ce pointeur sur une structure C que j'aimerais comprendre... peut-être que j'essaie de libérer de la mémoire déjà libérée (utilisation de smart pointers ?)...

    De même si j'essaie d'appeler ma lib C ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gpc_polygon_clip(GPC_UNION,mapPlanchersParType[id_type].inside(),gpc_piece.inside(),mapPlanchersParType[id_type].inside());
    (les inside() permettant d'accéder aux pointeurs sur struct C), je ne comprends pas pourquoi je n'arrive pas à récupérer le résultat (correctement calculé dans la lib, j'ai vérifié) dans mapPlanchersParType[id_type]...

  10. #30
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 398
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 398
    Points : 20 519
    Points
    20 519
    Par défaut
    je ne comprends pas pourquoi elle n'est pas libérée, je passe bien par la suite
    si je ne me trompe pas tu fais un malloc sur une variable locale à la fonction deep_copy de type gpc_polygon* cp.
    Or une fois que deep_copy() est terminée , cp ne vaut plus rien.
    Donc tu vas avoir un pointeur qui ne pointe sur aucune variable..

    Si tu veux utiliser des listes chainées vaut mieux prendre std::list ou std::vector en C++!

  11. #31
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 79
    Points : 26
    Points
    26
    Par défaut
    Je ne veux pas utiliser de liste chaînée, je souhaite faire une classe C++ qui "wrappe" la structure C gpc_polygon et gère la mémoire associée.

    Pour cela je donne comme attribut de ma classe C++ un pointeur sur gpc_polygon. Quand dois-je allouer la mémoire nécessaire pour mon pointeur ? Dans le constructeur de la classe C++ ? Et comment faire le constructeur par recopie et la surcharge de l'opérateur d'affectation dans ce cas ?

    Je pensais que le return à la fin de deep_copy() permettait de retourner la zone allouée en même temps que le gpc_polygon* et que du coup il n'y avait pas de memory leak.

  12. #32
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 79
    Points : 26
    Points
    26
    Par défaut
    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
    Polygone_GPC::Polygone_GPC(gpc_polygon* p) : m_poly(p)
    	{ 
    	}
     
    Polygone_GPC::Polygone_GPC() : m_poly(NULL)
    	{
    	}
     
    // le constructeur par copie doit faire une copie profonde, 
    // cad copier le contenu et ce qui est contenu dans le contenu
    Polygone_GPC::Polygone_GPC(const Polygone_GPC& other) 
    	{
    	if(other.m_poly != NULL)
    		{
    		m_poly = (gpc_polygon*)MALLOC_DEBUG(sizeof(*other.m_poly));
    		gpc_copy_polygon(m_poly,other.m_poly);
    		}
    	else
    		m_poly = NULL;
    	}
     
    Polygone_GPC::~Polygone_GPC()
    	{
    	gpc_free_polygon(m_poly);
    	}
     
    // swap idiom : résistant aux exceptions, et facile à écrire !
    Polygone_GPC& Polygone_GPC::operator=(const Polygone_GPC& other)
    	{
    	Polygone_GPC(other).swap(*this);
    	return *this;
    	}
     
    void Polygone_GPC::swap(Polygone_GPC& other)
    	{
    	std::swap(m_poly, other.m_poly);
    	}
     
    // parce qu'il y aura bien des fonctions qui pourront en
    // avoir besoin
    const gpc_polygon* Polygone_GPC::inside() const
    	{
    	return m_poly;
    	}
     
    gpc_polygon* Polygone_GPC::inside()
    	{ 
    	return m_poly;
    	}
    En écrivant le constructeur par recopie de la sorte, j'ai toujours le même problème... la zone allouée pour m_poly n'est pas libérée. Vu que cette fuite survient lors d'un push_back dans un vecteur, je pense que cela vient de la définition de l'opérateur d'affectation, non ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 11
    Dernier message: 02/12/2013, 20h49
  2. Réponses: 3
    Dernier message: 06/09/2010, 18h26
  3. fuite de mémoire
    Par mamag dans le forum MFC
    Réponses: 17
    Dernier message: 19/08/2005, 10h42
  4. Fuite de mémoire en utilisant le template list
    Par schtroumpf_farceur dans le forum Langage
    Réponses: 9
    Dernier message: 18/07/2005, 20h44
  5. Réponses: 8
    Dernier message: 17/10/2002, 12h52

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