Problème de mémoire
Hors ligneFleurety Le 28/02/2007 Ă  03:53 Profil de Fleurety Configuration de Fleurety

Bonjour je rencontre actuellement un problème.
En effet ayant trouvé une solution pour agrandir ma table char il se trouve que peu après l'execution du programme celui ci plante par manque de mémoire.
J'aimerai s'il vous plait avoir une solution pour optimisé ce code afin qu'il puisse réussir à formé une table d'au moin 200 caractères.

#include <iostream>
#include <conio.h>

using namespace std;

int main(int argc, char *argv[])
{

    char *ACCESS = "C:\\";
    char *Temp_Access;
    
    char kb;
    
    while(kb != char(13))
    {
    kb = getch();
    
    Temp_Access = new char[strlen(ACCESS) + 1];
    
    for(int counter = 0; counter < strlen(ACCESS); counter++)
    Temp_Access[counter] = ACCESS[counter];
    Temp_Access[strlen(ACCESS)] = 'a';
    Temp_Access[strlen(ACCESS)+1] = '\0';
    delete ACCESS;
    
    ACCESS = new char[strlen(Temp_Access)];
    for(int counter = 0; counter < strlen(Temp_Access); counter++)
    ACCESS[counter] = Temp_Access[counter];
    ACCESS[strlen(Temp_Access)] = '\0';
    delete Temp_Access;
    
    cout<<"ACCESS: "<<ACCESS<<endl;
    cout<<"size: "<<strlen(ACCESS)<<endl;
    }
delete ACCESS;
return 0;
}
Je vous remercie pour ceux qui on pris la peine d'avoir lu ce message et j'espère avoir une réponse bientôt.
Hors ligneInvité Le 01/03/2007 à 17:31 Profil de Invité Configuration de Invité

S'il plante, c'est parce que pour utiliser 200 octets, tu alloues en premier lieu 1 puis 2 puis ... 200 un malloc, c'est lent, et il faut toujours verifier point!=NULL apres l'alloc...

Ce qui me frappe, c'est que ton code ressemble plus à du C qu'à du Cpp... Utilise String comme type de variable par exemple. Pourquoi s'embêter avec un char * ? (sauf si ton fichier est binaire)

Sinon, tu peux l'allouer simplement avec malloc, et realloc ensuite pour modifier sa taille
--
Compte invité - devenez membre pour disposer de votre compte personnalisé !
Hors ligneFleurety Le 02/03/2007 Ă  17:02 Profil de Fleurety Configuration de Fleurety

Je te remercie de m'avoir répondu je pense que tu as raison, pourquoi s'embeter avec du C++ quand on peut faire le même programme en C avec realloc...
Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels