|
Page : 1 2 Page Précédente | |
Auteur | Sujet : Débordement de tableau invisible !!! |
Publicité | Posté le 14-11-2006 à 15:20:17 |
IrmatDen | Salut,
|
Trap D | Ce sont des problèmes "biens connus" en C. |
SkippyleGrandGourou | Et ça n'inquiète personne ??? |
Taz bisounours-codeur | utilise std::vector.
|
SkippyleGrandGourou |
Oui, je pense que c'est ce que je vais faire, mais je voudrais que l'utilisateur puisse passer en argument un simple tableau. Il y a moyen de convertir un tableau en vector sans connaître la taille du tableau, ou je demande (encore !) l'impossible ? |
IrmatDen | Tu demandes l'impossible. |
SkippyleGrandGourou | |
Trap D | Si c'est pour le pilotage d'un avion, y'a peut-être pas trop de choix ? |
red faction | c nymp
Message cité 2 fois Message édité par red faction le 14-11-2006 à 17:45:44 |
Publicité | Posté le 14-11-2006 à 17:44:54 |
Chaos Intestinal |
|
Taz bisounours-codeur |
il suffit de ne pas utiliser de tableau
|
SkippyleGrandGourou |
C'est sûr que chercher une aiguille dans une botte de foin (en l'occurence un tableau mal initialisé perdu au milieu de milliers de lignes de code et qui contamine un tableau bien initialisé, lui...), ça aide à gagner en vitesse...
Non, pas le choix...
Non, pas le choix... Enfin si : le vecteur. Ce qui sera d'ailleurs l'occasion pour nous deux (moi + l'utilisateur en question) de faire un premier pas vers la STL ! Message cité 1 fois Message édité par SkippyleGrandGourou le 14-11-2006 à 18:27:59 |
Taz bisounours-codeur | je comprends que tu ne comprends rien. Y a pas à avoir de premier pas vers STL. Quand t'apprends le C, tu fais du printf direct. Ben quand t'apprends le C++, tu fais du vector, string, etc direct. |
SkippyleGrandGourou | Alors faudra que tu m'explique pourquoi la STL est toujours reléguée aux derniers chapitres des cours et Faq C++, avec des avertissements style "il faut impérativement avoir compris en profondeur les fonctionnalités les plus avancées du C++ pour appréhender correctement la bibliothèque standard"... |
IrmatDen | Parce que pour bien la comprendre, c'est vital de comprendre les concepts utilisés? Sinon, tu les comprends pas.
|
SkippyleGrandGourou |
Certes, je n'ai pas dit ça, mais tu commence rarement par le dernier chapitre...
Celui-ci vient de là.
|
++fab victime du syndrome IH |
|
Taz bisounours-codeur |
|
neg'gwada rafix 971 | sinon pour le comportement que décrit SkippyleGr andGourou ça m'est déja arrivé, un autre exemple si tu alloues dynamiquement un tableau, tu l'utilises et tout, puis tu fais un free(tab), puis apres tu fais par ex tab[5] tu retrouves la valeur!! en fait il me semble que ça dépend des options de compilation, et gcc est assez "cool" si on lui rentre rien dedans. Je pense que si tu fais le free, la mémoire est effectivment libérée, mais les valeurs restent en mémoire (pas de remise à zeros) et le pointeur est juste un curseur que tu balades dans cette mémoire, si tu fais pas tab=NULL; apres le free ben tu peux encore te balader aux adresses de ta mémoire via tab. Message édité par neg'gwada le 15-11-2006 à 14:30:40 --------------- --- WinSplit Revolution --- |
Chaos Intestinal | Il faut avoir gardé un pointeur sur la zone, parce qu'il me semble que free() remet la valeur du pointeur à 0. |
neg'gwada rafix 971 | non, enfin pas de base sous gcc (mingw en tout cas), après ça dépend p'tetre du compilo --------------- --- WinSplit Revolution --- |
bjone Insert booze to continue |
|
SkippyleGrandGourou |
J'avais compris, merci... Ce que je voulais dire, c'est que si tu perds plus de temps à cause de ça pendant la phase de programmation que tu n'en gagneras pendant toute l'exécution, ça sert à rien...
Et moi ce qui m'afflige ce sont tous ces gens imbus d'eux-mêmes qui semblent penser qu'il faut au minimum un niveau doctorat en programmation pour avoir le droit de prétendre programmer et de poser des questions, et qui se permettent de faire des commentaires désobligeants sur des personnes qu'ils ne connaissent pas. D'autant plus que dans le cas présent, le truc débile est une faute de frappe, ce qui peut arriver à tout le monde, même à un bjone, un Taz ou un Bjarne Stroustrup, qui peut avoir des conséquences dangereuses (si ça se trouve c'est à cause d'un débordement de tableau de ce genre que la navette Challenger s'est scratchée, qui sait...) et qui à mon humble avis ne devrait pas passer la compilation. Mais bon, ce que j'en dis... |
Taz bisounours-codeur |
SkippyleGrandGourou |
bjone Insert booze to continue |
Message cité 2 fois Message édité par bjone le 16-11-2006 à 14:39:50 |
bjone Insert booze to continue | mais je veux dire:
|
neg'gwada rafix 971 | moi j'ai juste eu vite fait quelques cours de prog en ecole d'ingé, et jamais on m'a parlé de possibilité de débordement de mémoire Message édité par neg'gwada le 16-11-2006 à 14:09:54 --------------- --- WinSplit Revolution --- |
SkippyleGrandGourou |
Tutafé. Justement parce que la plupart de mes tableaux sont des tableaux de pointeurs sur des objets plus complexes, et que comme ça dès qu'il y a débordement ça me fait une segfault, je trouve rapidement d'où ça vient et je fais en sorte que ça puisse plus arriver. Donc la leçon à retenir serait de systématiquement surévaluer la taille des tableaux de valeurs ? (ce qui ne résoud pas le problème en cas d'accès à une case vide, mais évite la contamination, ce qui divise déjà notablement les riques, effectivement)
Bof, comme neg'gwada, les cours de programmation que j'ai eu à la fac étaient surtout des cours d'introduction, le genre de truc où tu dois faire un programme qui affiche trois pauvres étoiles au bout de la 3e séance de TP (à part un cours de programmation logique en première année de deug)... Donc je les ai systématiquement séchés. Message cité 2 fois Message édité par SkippyleGrandGourou le 16-11-2006 à 14:29:39 |
bjone Insert booze to continue |
|
Chaos Intestinal |
|
SkippyleGrandGourou |
Oui, faut vraiment que je m'y mettes, bien que dans ce cas particulier ça me gêne un peu, le principal utilisateur auquel le programme est destiné étant un ancien fortraniste et pawiste qui truffe ses programmes "c++" de printf...
Aussi, mais c'est pas toujours évident... |
bjone Insert booze to continue | en principe ça devrait être naturel
|
neg'gwada rafix 971 | perso, jamais eu besoin de stl(vector) jusqu'à présent, sauf une fois mais bon après il ya peu etre une habitude à prendre --------------- --- WinSplit Revolution --- |
Taz bisounours-codeur |
neg'gwada rafix 971 |
--------------- --- WinSplit Revolution --- |
neg'gwada rafix 971 | tin v'la que comme par hazard pour la premiere fois, je me retrouve avec un débordement de mémoire dans mon code en Fortran, 3 jours pour trouver le bleme Message édité par neg'gwada le 18-11-2006 à 20:00:05 --------------- --- WinSplit Revolution --- |
el muchacho Comfortably Numb |
--------------- Les aéroports où il fait bon attendre, voila un topic qu'il est bien |
el muchacho Comfortably Numb |
Message cité 1 fois Message édité par el muchacho le 18-11-2006 à 23:58:03 --------------- Les aéroports où il fait bon attendre, voila un topic qu'il est bien |
Publicité | Posté le |
Page : 1 2 Page Précédente |
Sujets relatifs | |
---|---|
Tableau ou liste linéaire chaînée? | passer un tableau en parametre dans un sub? |
Question tres simple : cloner un tableau | tableau en perl |
[HTML/PHP] Exploiter un tableau html pour base de données | tableau associatif multidimensionel |
[VB] Extraire une ligne excel dans un autre tableau | [VBS,WSH] Fonction qui retourne un tableau |
HTML : Table avec TR invisible | Colonne fixe dans un tableau et retour chariot. |
Plus de sujets relatifs à : Débordement de tableau invisible !!! |