Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2456 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C] Probleme de #define...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Probleme de #define...

n°309406
FabienM
Posté le 14-02-2003 à 14:59:02  profilanswer
 

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 ???
 

mood
Publicité
Posté le 14-02-2003 à 14:59:02  profilanswer
 

n°309665
apolon34
Vive Linux!!
Posté le 14-02-2003 à 16:22:03  profilanswer
 

dynamiquement avec un malloc() ?

n°309698
dsls
Posté le 14-02-2003 à 16:40:06  profilanswer
 

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

n°309791
FabienM
Posté le 14-02-2003 à 17:42:16  profilanswer
 

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

Code :
  1. struct fich sFICH[max];

n°309806
dsls
Posté le 14-02-2003 à 17:57:39  profilanswer
 

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.   ...

n°309812
bjone
Insert booze to continue
Posté le 14-02-2003 à 18:02:38  profilanswer
 

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

n°309934
FabienM
Posté le 14-02-2003 à 20:07:56  profilanswer
 

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

n°310027
FabienM
Posté le 14-02-2003 à 22:21:57  profilanswer
 

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
n°310032
Taz
bisounours-codeur
Posté le 14-02-2003 à 22:34:54  profilanswer
 

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

n°310035
FabienM
Posté le 14-02-2003 à 22:44:23  profilanswer
 

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...

mood
Publicité
Posté le 14-02-2003 à 22:44:23  profilanswer
 

n°310049
Taz
bisounours-codeur
Posté le 14-02-2003 à 23:11:33  profilanswer
 

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

n°310060
FabienM
Posté le 14-02-2003 à 23:30:16  profilanswer
 

pourquoi paske cela c pas correct ??
 

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

n°310083
Taz
bisounours-codeur
Posté le 14-02-2003 à 23:47:32  profilanswer
 

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

n°310102
dsls
Posté le 15-02-2003 à 00:04:30  profilanswer
 

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/)

n°310105
Taz
bisounours-codeur
Posté le 15-02-2003 à 00:07:14  profilanswer
 

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

n°310106
bjone
Insert booze to continue
Posté le 15-02-2003 à 00:07:28  profilanswer
 

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...

n°310110
dsls
Posté le 15-02-2003 à 00:09:47  profilanswer
 

++Taz a écrit :

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


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

n°310165
Musaran
Cerveaulté
Posté le 15-02-2003 à 01:06:32  profilanswer
 

Ou déclarer le tableau en global ou static.


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
n°310217
Taz
bisounours-codeur
Posté le 15-02-2003 à 10:17:20  profilanswer
 

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...

n°310273
FabienM
Posté le 15-02-2003 à 13:07:02  profilanswer
 

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

n°310288
Taz
bisounours-codeur
Posté le 15-02-2003 à 13:25:04  profilanswer
 

ben tu fais du realloc si necessaire
 
rtfm

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C] Probleme de #define...

 

Sujets relatifs
probleme d'addition(noob);Probleme avec filectime()
[vb] Probleme de test de chaine[.NET] Enumérations (problème résolu)
Probleme popup[SQL] problème avec des IN
Validateur W3C + Probleme lors de son installationProbleme dimmensionnement cellule
Problème d'importation de classe d'une DLLproblème dans easyphp 1.6
Plus de sujets relatifs à : [C] Probleme de #define...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR