[C] Probleme de #define...

Probleme de #define... [C] - C++ - Programmation

Marsh Posté le 14-02-2003 à 14:59:02    

J'aimerai reserver un espace buffer avec la commande

Code :
  1. #define max ?????

mais le probleme qui se pose, j'ai besoin de reservé un tres grand espace buffer (50000)et  j'obtiens une erreur "arraysize is too large". normal !!
 
Mais comment pourrais je faire pour reserver autant d'espace buffer ???
 

Reply

Marsh Posté le 14-02-2003 à 14:59:02   

Reply

Marsh Posté le 14-02-2003 à 16:22:03    

dynamiquement avec un malloc() ?

Reply

Marsh Posté le 14-02-2003 à 16:40:06    

Hmmm ... ça sent effectivement l'explosion de stack avec la déclaration d'un gros tableau sur la pile... -> a remplacer par un malloc

Reply

Marsh Posté le 14-02-2003 à 17:42:16    

Comment je peux faire avec un malloc, car ma variable "max" sert à faire un tableau de structure ??
 

Code :
  1. struct fich sFICH[max];

Reply

Marsh Posté le 14-02-2003 à 17:57:39    

FabienM a écrit :

Comment je peux faire avec un malloc, car ma variable "max" sert à faire un tableau de structure ??
 

Code :
  1. struct fich sFICH[max];




 

Code :
  1. struct fich *sFICH;
  2.   sFICH = malloc (max*sizeof(struct fich));
  3.   ...

Reply

Marsh Posté le 14-02-2003 à 18:02:38    

et ne pas oublier le free() qui va avec lorsque tu as plus besoin du tableau (du tout :D)

Reply

Marsh Posté le 14-02-2003 à 20:07:56    

Ah ouai ok !!pasque moi g essayer de mettre le malloc entre les accolades ...

Reply

Marsh Posté le 14-02-2003 à 22:21:57    

Bon g plus d'erreur "arraysize" mais un autre probleme plus grave c ke ca plante à tout va !!
 
Le probleme est k'en faite je ne sais pas combien  de données seront stockées dans le tableau de structure...
car c bien jolie de faire

Code :
  1. struct fich *sFICH;
  2.      sFICH = (struct fich *) malloc (sizeof(struct fich) * max);


mais on peut reserver de la memoire pour rien ou bien au contraire ne pas en reserver assez !!
 
Comment palier à ce probleme ??


Message édité par FabienM le 14-02-2003 à 23:29:13
Reply

Marsh Posté le 14-02-2003 à 22:34:54    

moi je te donne la solution si tu confesses que t'es un boolay

Reply

Marsh Posté le 14-02-2003 à 22:44:23    

ben forcement que j'suis une merde !!
 
On nous demande de faire des trucs bien plus compliqué ke nos connaissances...alors comment veux tu !! on en decouvre tt les jours...

Reply

Marsh Posté le 14-02-2003 à 22:44:23   

Reply

Marsh Posté le 14-02-2003 à 23:11:33    

FabienM a écrit :

ben forcement que j'suis une merde !!
 
On nous demande de faire des trucs bien plus compliqué ke nos connaissances...alors comment veux tu !! on en decouvre tt les jours...

relis un peu le post, la reponse t'as deja etais donné plein de fois

Reply

Marsh Posté le 14-02-2003 à 23:30:16    

pourquoi paske cela c pas correct ??
 

Code :
  1. struct fich *sFICH;
  2.        sFICH = (struct fich *) malloc (sizeof(struct fich) * max);

Reply

Marsh Posté le 14-02-2003 à 23:47:32    

c'est tout  a fait correct, max designe le nombre d'éléments alloués dynamiquement. en fait je crois que tu aurais besoin d'un cours sur les pointeurs pour comprendre à quoi sert malloc

Reply

Marsh Posté le 15-02-2003 à 00:04:30    

FabienM a écrit :

pourquoi paske cela c pas correct ??
 

Code :
  1. struct fich *sFICH;
  2.        sFICH = (struct fich *) malloc (sizeof(struct fich) * max);




En général, le cast du malloc n'est pas nécessaire... enfin bon, c'est souvent sujet à débats  :D (cf. http://www.faqs.org/faqs/fr/comp/lang/faq-c-3/)

Reply

Marsh Posté le 15-02-2003 à 00:07:14    

c'est toi meme qui as donné cet exemple  :heink:

Reply

Marsh Posté le 15-02-2003 à 00:07:28    

FabienM a écrit :

Bon g plus d'erreur "arraysize" mais un autre probleme plus grave c ke ca plante à tout va !!
 
Le probleme est k'en faite je ne sais pas combien  de données seront stockées dans le tableau de structure...
car c bien jolie de faire

Code :
  1. struct fich *sFICH;
  2.      sFICH = (struct fich *) malloc (sizeof(struct fich) * max);


mais on peut reserver de la memoire pour rien ou bien au contraire ne pas en reserver assez !!
 
Comment palier à ce probleme ??


 
realloc() ou alors tu malloc() quand tu sais combien d'éléments tu vas avoir...

Reply

Marsh Posté le 15-02-2003 à 00:09:47    

++Taz a écrit :

c'est toi meme qui as donné cet exemple  :heink:  


Moi je l'ai donné sans le cast ...

Reply

Marsh Posté le 15-02-2003 à 01:06:32    

Ou déclarer le tableau en global ou static.


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Marsh Posté le 15-02-2003 à 10:17:20    

Musaran a écrit :

Ou déclarer le tableau en global ou static.  

ouais enfin bon, c'est pas une bonne habitude. les debutants sont nuls en calcul mental et tu te retrouves avec des double tab[500][500] etc....
la pile c'est bien, les caraibles statiques c'est bien, en abuser, ça craint, le malloc je commence demain...

Reply

Marsh Posté le 15-02-2003 à 13:07:02    

Oui mais le probleme c ke je ne sais pas combien de données seront stocké ds la structure...

Reply

Marsh Posté le 15-02-2003 à 13:25:04    

ben tu fais du realloc si necessaire
 
rtfm

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed