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 :

std::string -> liberation mémoire


Sujet :

C++

  1. #1
    Membre Expert Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 048
    Par défaut std::string -> liberation mémoire
    Bonjour tout le monde,

    Je viens avec un problème que je cherche à résoudre.

    J'ai un programme de test tout simple avec un std::string dans lequel je mets environ 11k caractères.
    je check la mémoire à plusieurs endroits et je m'aperçois que le nombre d'octet occupé ne diminue pas à la destruction de la string.
    Problème gênant qu'il n'y a pas avec les char*

    voila mon petit code de test:
    (memory affiche la memoire en bytes)
    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
     
    std::string & clearing(std::string& str2)
    {
        std::string* str = new std::string;
        str2.swap(*str);
        str->clear();
        delete str;
        return str2;
    }
     
    int _tmain(int argc, _TCHAR* argv[])
    {
        std::cout << "memory :  " << memory() << std::endl;
        std::string str2("PouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouhPouyouhpouyouh");
        std::cout << "memory :  " << memory() << std::endl;
        clearing(str2);
        std::cout << "memory :  " << memory() << std::endl;
        _getch();
        return 0;
    }
    Voila ce que j'obtiens :
    memory : 2433024
    memory : 2609152
    memory : 2621440
    La mémoire augmente constamment. Pas moyen de la faire diminuer. Je pense qu'il s'agit d'un problème d'allocateur de la string, mais aucune idée de leur fonctionnement...

    Est-ce bien ça?
    Quel est la façon de voir la chose pour la stl concernant ce "problème"?
    Y a t il moyen de libérer correctement?

    Merci

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Salut,

    Et si tu fais ça plus simplement, à savoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void clearing(std::string& s)
    {
        std::string().swap( s );
    }
    ?

    Essaye de voir ce que te donne un str2.capacity() juste après le swap ?
    Comment mesures-tu la mémoire ?

    MAT.

  3. #3
    Membre Expert Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 048
    Par défaut
    Salut Mat,
    je mesure la mémoire avec une simple petite fonction:
    unsigned long memory()
    {
    PROCESS_MEMORY_COUNTERS pmc;
    GetProcessMemoryInfo(GetCurrentProcess(),&pmc,sizeof(pmc));
    return pmc.PeakWorkingSetSize;
    }
    Ta fonction à déjà l'avantage de ne pas augmenter encore plus la mémoire effectivement:
    memory : 2437120
    memory : 2613248
    memory : 2613248
    Le capacity() passe de 11999 avec la très longue string de test à 15.

    Est-ce la bonne façon de récupérer l'occupation mémoire du processus au moins?

    merci

  4. #4
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    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
    Par défaut
    Tu oublies un point important : tu mesure la taille mémoire du processus. Hors, dès lors que le processus alloue de la mémoire, il la garde - et ne la rends que sur ordre explicite, ou si l'OS réclame cet espace mémoire (il ne le fait que pour les grosses quantités de mémoire ; 11K, c'est peanutes pour lui).

    L'OS considère qu'un programme qui a fait une grosse allocation a de bonne chances d'en refaire une similaire peu de temps après, et joue donc la carte du mec sympa en laissant la mémoire à disposition du processus. La prochaine allocation importante sera donc moins coûteuse en temps processeur.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Surtout que comme son nom l'indique PeakWorkingSetSize c'est peak, donc la mémoire maximale qui a été utilisée au cours de la vie du processus (enfin le working set).
    Donc ça ne descend jamais, par définition.

    MAT.

  6. #6
    Membre Expert Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 048
    Par défaut
    Ok merci à tout les deux pour ces explications,
    donc le simple tricks avec le swap suffit.

    Merci encore.

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

Discussions similaires

  1. std::string et fuite de mémoire
    Par buzzkaido dans le forum SL & STL
    Réponses: 19
    Dernier message: 12/06/2007, 15h55
  2. Réponses: 7
    Dernier message: 25/11/2005, 17h11
  3. [débutant] equivalent à sprintf pour les std::string
    Par Biosox dans le forum SL & STL
    Réponses: 22
    Dernier message: 26/08/2005, 12h46
  4. cannot convert 'std::string' to 'System::String ^'
    Par broadhead dans le forum MFC
    Réponses: 1
    Dernier message: 14/06/2005, 11h37
  5. std::string, operator =
    Par tut dans le forum SL & STL
    Réponses: 10
    Dernier message: 05/11/2004, 12h07

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