[C] stack overflow a la premiere ligne

stack overflow a la premiere ligne [C] - C++ - Programmation

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

j'ai un stack overflow a la premiere ligne de mon prog, ca vient d'ou?
 
voila le debut
du code
 
 

Code :
  1. void main ()
  2. {
  3. int p=0,n=1,d1=1,d2=1,i,j;
  4. char nom_data[10];
  5. char nom_data1[10];
  6. char nom_clavier[20]="azerty";
  7. char nom_resultat[20]="result.txt";
  8. struct digram digramme[10000];
  9. struct digram tampon[10000];
  10. struct touche clavier[100];


Message édité par eraser17 le 14-04-2003 à 19:03:10
Reply

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

Reply

Marsh Posté le 14-04-2003 à 19:10:33    

c'est koi les taille de tes struct ?

Reply

Marsh Posté le 14-04-2003 à 19:11:55    

Konar a écrit :

c'est koi les taille de tes struct ?


 

Code :
  1. struct digram {
  2. char touche1[10];
  3. char touche2[10];
  4. char a;
  5. char b;
  6. int doigt1;
  7. int doigt2;
  8. int frequence;
  9. float temps;
  10. double distance;
  11. int test1;
  12. int test2;
  13. };
  14. struct touche
  15. {
  16. char caractere;
  17. int main;
  18. int doigt;
  19. int colonne;
  20. int ligne;
  21. int shift;
  22. }


c quasi sur que ca vient de la mais je vois pas comment regler le prob.

Reply

Marsh Posté le 14-04-2003 à 19:16:58    

new
(ou malloc)

Reply

Marsh Posté le 14-04-2003 à 19:19:49    

Konar a écrit :

new
(ou malloc)


 
heu comment je fais? j'ai jamais utilisé ca.

Reply

Marsh Posté le 14-04-2003 à 19:31:25    

eraser17 a écrit :


 
heu comment je fais? j'ai jamais utilisé ca.


Code :
  1. struct digram *digramme = (struct digram*)malloc(10000 * sizeof (struct digram));


Reply

Marsh Posté le 14-04-2003 à 19:32:24    

ok merci  :jap:

Reply

Marsh Posté le 14-04-2003 à 19:43:58    

Attention, faut pas oublier de tester le pointeur retourné par malloc, si il vaut NULL c'est que le malloc a échoué.
il faut aussi libérer la mémoire à la fin du programme avec free().

Reply

Marsh Posté le 14-04-2003 à 20:19:26    

question de super newbie en C : avec l'allocation dynamique ça va marcher alors que ça marche pas en statique c est ça ? pourquoi exactement ?


---------------
http://runnerstats.net
Reply

Marsh Posté le 14-04-2003 à 21:43:13    

noldor a écrit :

question de super newbie en C : avec l'allocation dynamique ça va marcher alors que ça marche pas en statique c est ça ? pourquoi exactement ?


Parce qu'un programme doit avoir une taille de pile déterminée à l'avance (l'espace d'adressage est limité).
Au moins avec l'allocation sur le tas, tu sais quand ça échoue. Quand tu as un dépassement sur la pile, ça fait boom.

Reply

Sujets relatifs:

Leave a Replay

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