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

  FORUM HardWare.fr
  Programmation
  C

  [C] Stack Overflow

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Stack Overflow

n°1801410
Facewindu
Posté le 17-10-2008 à 14:05:45  profilanswer
 

Salut
 
J'ai le bout de coude suivant :

Code :
  1. printf("ok\n" );
  2. int i=0;
  3. int array[validPacketsNumber][4];
  4. for(i=0;i<validPacketsNumber;i++){
  5.  byte_ptr+=int_ptr[i];
  6.  printf("pk1\n" );
  7.  nativeMainHeaderArray[i][0]=id;
  8.  printf("pk2\n" );
  9.  nativeMainHeaderArray[i][1]=type;
  10.  printf("pk3\n" );
  11.  nativeMainHeaderArray[i][2]=flag;
  12.  printf("pk4\n" );
  13.  nativeMainHeaderArray[i][3]=length;
  14.  printf("pk5\n" );
  15. }


 
Pas de prob de compilation.
A l'exécution, le "ok" s'affiche bien, mais pas le pk1.
Jai une erreur :
ECEPTION_STACK_OVERFLOW
En fait je soupconne validPacketsNumber d'être trop grand. C ne peut pas créer un tableau aussi grand ?
Dans certains cas, avec des valeurs petites pour validPacketsNumber ca marche nickel (genre validPacketsNumber=6000)
Mais là j'ai validPacketsNumber=42624 et ca marche pô :(
Des idées pour palier au problème ?

mood
Publicité
Posté le 17-10-2008 à 14:05:45  profilanswer
 

n°1801413
theshockwa​ve
I work at a firm named Koslow
Posté le 17-10-2008 à 14:12:04  profilanswer
 

crée le avec un appel à malloc au lieu de le mettre sur ta pile

n°1801422
Facewindu
Posté le 17-10-2008 à 14:17:28  profilanswer
 

ouais alors j'ai jamais trop fait les mallocs pour les tabs à deux dimensions.
Ca va ça :
int *tab=malloc(validPacketNumber*4*sizeof(int));
for(...){
    tab[4*i+0]=id;
    tab[4*i+1]=type;
    tab[4*i+2]=flag;
    tab[4*i+3]=length;
}
je 'occupe de mon tableau
puis free(tab) à la fin
 
du coup on a un tab à une seule dimension mainteannt, mais c'est pas bien génant.
 
je peux quand meme garder un tab à deux dimensions en mallocant ?

n°1801433
theshockwa​ve
I work at a firm named Koslow
Posté le 17-10-2008 à 14:25:03  profilanswer
 

J'ai tendance à penser qu'un groupe de 4 entiers ne devrait pas trainer dans la nature, tu as probablement un moyen logique de les regrouper dans ta structure. Du coup, la création de ton tableau sera plus logique.
 
sinon, oui, tu peux faire un tableau à deux dimensions, mais ce n'est pas nécessairement une bonne idée, vu que ca impliquera de faire une indirection supplémentaire (tableau d'int * pointant eux-mêmes sur des tableaux de 4 entiers)

n°1801448
Facewindu
Posté le 17-10-2008 à 14:50:35  profilanswer
 

ok j'ai fait un tableau à deux dimensions. En fait après je dois le passer à Java via JNI, qui attend un tableau à deux dimensions. Mais ca marche nickel maintenant, merci !


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

  [C] Stack Overflow

 

Sujets relatifs
[Java/JNI et C] creation de variable globale[C++] impossible de compiler id3lib avec g++
MFC C++ cammande DOSVisual C++ 2008 Express : Ergonomie
[C++][Vector & String][Memoire] Excep sur ~ d'un vecteur de string> 15[Visual C++], erreur de compil d'un hello world
[C] recuperer la variable d'une structure connaissant son nomC ??
C problème 
Plus de sujets relatifs à : [C] Stack Overflow


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