begin process at 2010 02 10 01:06:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

Probleme allocation dynamique


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Probleme allocation dynamique

mercredi 27 février 2008 à 11:01:49 | Probleme allocation dynamique

totoscill

Bonjour,

Je veux allouer de la mémoire dynamiquement pour 4 tableaux à 2 dimensions mais lors de l'éxécution, le test m'informe que l'allocation est impossible. Je programme sous labwindows CVI 8.5. Voici le code:

TabTimePalAlim=(int**) calloc(5,sizeof(int*));
  for(i=0; i<NbAlim; i++)
   TabTimePalAlim[i]=(int*) calloc(5,sizeof(int)); 
    
  if(TabTimePalAlim[i]==NULL)
   {
   MessagePopup("Erreur!!!", "Erreur lors de l'allocation de mémoire!");
   
   for(i=0; i<5; i++)
    {
    free(TabTimePalAlim[i]);
    TabTimePalAlim[i]=NULL;
    }
   free(TabTimePalAlim);
   TabTimePalAlim=NULL;
   }
    
  TabValPalAlim=(double**) calloc(5,sizeof(double*));
  for(i=0; i<NbAlim; i++)
   TabValPalAlim[i]=(double*) calloc(5,sizeof(double));
   
  if(TabValPalAlim[i]==NULL)
   {
   MessagePopup("Erreur!!!", "Erreur lors de l'allocation de mémoire!");
   
   for(i=0; i<5; i++)
    {
    free(TabValPalAlim[i]);
    TabValPalAlim[i]=NULL;
    }
   free(TabValPalAlim);
   TabValPalAlim=NULL;
   }
    
 
  TabTimePalCh=(int**) calloc(5,sizeof(int*));
  for(i=0; i<NbCharge; i++)
   TabTimePalCh[i]=(int*) calloc(5,sizeof(int));
   
  if(TabTimePalCh[i]==NULL)
   {
   MessagePopup("Erreur!!!", "Erreur lors de l'allocation de mémoire!");
   
   for(i=0; i<5; i++)
    {
    free(TabTimePalCh[i]);
    TabTimePalCh[i]=NULL;
    }
   free(TabTimePalCh);
   TabTimePalCh=NULL;
   }
    
  TabValPalCh=(double**) calloc(5,sizeof(double*));
  for(i=0; i<NbCharge; i++)
   TabValPalCh[i]=(double*) calloc(5,sizeof(double));
    
  if(TabValPalCh[i]==NULL)
   {
   MessagePopup("Erreur!!!", "Erreur lors de l'allocation de mémoire!");
   
   for(i=0; i<5; i++)
    {
    free(TabValPalCh[i]);
    TabValPalCh[i]=NULL;
    }
   free(TabValPalCh);
   TabValPalCh=NULL;
   }

A chaque démarrage, le problème reviend. J'ai essayer avec la fonction malloc et l'allocation se fait correctement mais lors de la réallocation de mémoire (realloc) les problèmes reviennes (run time error:Attempt to realloc pointer to freed memory ).
voici la réallocation pour infos:

TabTimePalAlim=realloc(TabTimePalAlim, NbAlim*sizeof(int*));
     TabTimePalAlim=realloc(TabTimePalAlim, NbPal*sizeof(int));
    
     if(TabTimePalAlim == NULL)
     {
     for(i=0; i<NbPal; i++)
      {
      free(TabTimePalAlim[i]);
      TabTimePalAlim[i]=NULL;
      }
     free(TabTimePalAlim);
     TabTimePalAlim=NULL;
     }
    
   
     TabValPalAlim=realloc(TabValPalAlim, NbAlim*sizeof(double*));
     TabValPalAlim=realloc(TabValPalAlim, NbPal*sizeof(double));
    
     if(TabValPalAlim == NULL)
     {
     for(i=0; i<NbPal; i++)
      {
      free(TabValPalAlim[i]);
      TabValPalAlim[i]=NULL;
      }
     free(TabValPalAlim);
     TabValPalAlim=NULL;
     }
    
     TabValPalCh=realloc(TabValPalCh, NbAlim*sizeof(double*));
     TabValPalCh=realloc(TabValPalCh, NbPal*sizeof(double));
         
     if(TabValPalCh == NULL)
     {
     for(i=0; i<NbPal; i++)
      {
      free(TabValPalCh[i]);
      TabValPalCh[i]=NULL;
      }
     free(TabValPalCh);
     TabValPalCh=NULL;
     }
    
     TabTimePalAlim=realloc(TabTimePalCh, NbAlim*sizeof(int*));
     TabTimePalAlim=realloc(TabTimePalCh, NbPal*sizeof(int));
    
     if(TabTimePalCh == NULL)
     {
     for(i=0; i<NbPal; i++)
      {
      free(TabTimePalCh[i]);
      TabTimePalCh[i]=NULL;
      }
     free(TabTimePalCh);
     TabTimePalCh=NULL;
     }


Pourriez vous me dire quel est le problème?

Je vous remercie.

samedi 1 mars 2008 à 15:50:16 | Re : Probleme allocation dynamique

JCDjcd


TabTimePalAlim=(int**) calloc(5,sizeof(int*));
  for(i=0; i<NbAlim; i++)
   TabTimePalAlim[i]=(int*) calloc(5,sizeof(int)); 


tu es sur(e) du premier 5 ?? ca serait pas par hasard calloc(NbAlim,sizeof(int*)) ???


Pourquoi faire simple quand on peut faire compliqué ?


Cette discussion est classée dans : free, sizeof, tabtimepalalim, tabvalpalalim, tabvalpalch


Répondre à ce message

Sujets en rapport avec ce message

PROBLEME POINTEURS [ par zeloveur ] char * saisirChaine(){ int i=0; char *chn; chn=(char *)malloc(sizeof(char)); do { chn[i]=getchar(); chn=(char *)realloc(chn,(++i+1)*sizeof(char)); } connexion à MySQL chez Free [ par Xs ] Salut !je cherche a faire un prog, sous dos, qui peut se connecter a une base de donnée SQL hébergée chez Free.comment fais-t-on ? (ca va des sockets long double et VC++ [ par omi ] J'ai un leger probleme avec visual C++ 7.0 .N'y a t'il pas un moyen de lui faire accepter les long double car il les prend pour des double normaux cad allocation dynamique [ par none77 ] Bonjour,j'ai un petit prog dans lequel j'utilise deux tablo dynamiques (j'utilise malloc() )A la fin je dois donc faire des free().Mon pb est ke lorsq taille chaine de char [ par langedechu ] Salut , voila mon prob (je sais plus comment faire) :j'ai une variable : const char *buffer; et j aimerais savoir le nombre de caractere stocker dans tailles des variables en octets [ par aardman ] Salut,Je me suis fait quelques tests sur les tailles des variables.voila les valeurs que mon compilo me retourne:sizeof(char) retourne 1sizeof(int) Visual C++ Free() [ par PRZYBYLSKI ] #include #include #include "stdafx.h"Question au Pro?Qu'es qui est faux docteurArrivé à free ça bombe#include <io Problème d'effacement de tableau en C++ (sans MFC) [ par Shad0w ] Voilà, mon code copie le contenu d'un fichier dans une edit :------------- char fil[LEN]; OPENFILENAME ofn; ZeroMemory(&ofn, sizeof(OPENFI help pliz pour un labo sur les liste chaine et les fichiers [ par Infern0 ] void ajoutrdv(void){ FILE *FichMED; FILE *FichRDV; struct RDV rdv; struct medecin med; int nummed; int nblut = 0; int recordsuiv; int recordlibresuiv; Gros Probleme En C [ par Infern0 ] Bon, voila 3 fonction de mon programme. Avec celle d'affichage, quand j'affiche la 1ere, y a aucun probleme, si j'affiche la deuxieme, g des chiffre


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales