je vais avoir un problème de fuite de mémoire et il est en fait générer à partir du tableau de structure suivante:mémoire étrange fuite
TagStruct TagData [] =
{
{ Tag_SecurityToken, string("x-abc-security-token"), string("ab-security-token") } ,
{ Tag_XYZ, string("x-abc-xyz"), string("ab-xyz") },
{ Tag_ChunkCount, string("x-abc-meta-chunk"), string("ab-meta-chunk") },
{ Tag_OriginalFileSize, string("x-abc-meta-totalsize"), string("ab-meta-totalsize")}
};
la chose étrange est bien sûr le problème de fuite de mémoire et la question la plus étrange est que quand je ferme le client VS dépose les premier, troisième et quatrième éléments mais pas le 2ème élément (Tag_XYZ). La fuite de mémoire semble générer dans la première manche avant d'appeler même le tableau, et enfanta à l'esprit que j'utilise uniquement le tableau à des fins de vérification:
string Get_Tag (Tags tag)
{
return m_ClientType == CType_ABC ? TagData[tag].strABC : TagData[tag].strAB;
}
Cest en fait toute la raison. Il n'y a donc aucune allocation de tas/mémoire en ligne d'aucune sorte.
aussi la structure Tag ressemble STH comme ceci:
struct TagStruct
{
Tags tag;
std::string strABC;
std::string strAB;
};
Je voudrais également vous dire que c'est un tableau global et je l'ai aussi essayé de le rendre statique, mais continué à obtenir fuite de mémoire, aussi J'ai essayé de déclarer les chaînes dans le tableau comme "str"
plutôt que string("str")
mais j'ai continué à avoir des fuites de mémoire. Oui, la fuite de mémoire est statique, ce qui signifie qu'elle ne se construit pas au fil du temps mais qu'il vaut mieux conserver un code propre. Aucune suggestion??
errr .. je ne vois pas une fuite .. vous sûr? –
Eh bien c'est ce que VS dit, et franchement je ne vois pas vraiment de fuite non plus, c'est pourquoi j'ai utilisé le mot "bizarre" –