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

  FORUM HardWare.fr
  Programmation
  C++

  Erreur de segmentation suite au passage à SuSE 8.1

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Erreur de segmentation suite au passage à SuSE 8.1

n°301166
warp
Posté le 04-02-2003 à 16:49:08  profilanswer
 

J'ai un programme qui fonctionnait bien sous SuSE 7.2
Je viens d'installer SuSE 8.1, et là ça va plus.
 
Voici la partie du code.
C'est une méthode d'une classe, et c'est là que ça plante,
lorsque j'essaye d'affichier ou d'utiliser le float (f_ret en l'occurence) :
 

Code :
  1. int CSti::GetInverterVin(char* &asVin){
  2. int iTypeVal,iRet;
  3. char commande[10];
  4. float f_ret;
  5. int ret;
  6. ret=CInverters::GetInverterVin(asVin);
  7. printf("On reçoit la chaine: %s\n",asVin);
  8. iRet=atoi(asVin);
  9. printf("en entier ça donne : %d\n",iRet);
  10. printf("fret vaut : \n%f\n",f_ret);
  11. try {
  12.  f_ret=strtod(asVin,NULL);
  13.  if(f_ret==-1)
  14.   printf("erreur strtod\n" );
  15. } catch (...){
  16.  printf("Ohhh.......problème\n" );
  17. }


 
Donc je reçois une donnée en chaine de caractères.
Je l'affiche, pas de problème.
Je la transforme en entier, et j'affiche, pas de problème.
 
Mais dès que j'utilise un float, ça va plus.
Encore plus bizarre (et c'est peut-être de là que vient l'erreur.)
Si j'ajoute la ligne :
 

Code :
  1. int CSti::GetInverterVin(char* &asVin){
  2. int iTypeVal,iRet;
  3. char commande[10];
  4. int ret;
  5. float f_ret;
  6. ret=CInverters::GetInverterVin(asVin);
  7. printf("On reçoit la chaine: %s\n",asVin);
  8. iRet=atoi(asVin);
  9. printf("en entier ça donne : %d\n",iRet);
  10. float nouveau_float=5;
  11. printf("Le nouveau float vaut : %f\n",nouveau_float);
  12. printf("fret vaut : \n%f\n",f_ret);
  13. try {
  14.  f_ret=strtod(asVin,NULL);
  15.  if(f_ret==-1)
  16.   printf("erreur strtod\n" );
  17. } catch (...){
  18.  printf("Ohhh.......problème\n" );
  19. }


 
ça ne va plus non plus.
Comme si àje ne pouvais pas utiliser de float.
 
.....une idée ???????


Message édité par warp le 04-02-2003 à 18:12:25

---------------
Il n'est pas nécéssaire de réussir pour persévérer.
mood
Publicité
Posté le 04-02-2003 à 16:49:08  profilanswer
 

n°301217
warp
Posté le 04-02-2003 à 17:19:57  profilanswer
 

euuuhhhhh


---------------
Il n'est pas nécéssaire de réussir pour persévérer.
n°301221
Kristoph
Posté le 04-02-2003 à 17:24:03  profilanswer
 

Utilises les balises "cpp" s'il te plait et pas les balises "citation"
 

Code :
  1. int CSti::GetInverterVin(char* &asVin){


 
CSti::GetInverterVin prend en paramètre une reference sur un char * ??? C'est vraiment ce que tu veux ?
 
Envisage d'abandonner completement les char * au profit des string

n°301264
warp
Posté le 04-02-2003 à 18:10:54  profilanswer
 

Non, je ne dois pas forcément garder des char*,
mais je ne pense pas que ce soit l'origine du problème.
 
Je modifierais tout de même ça demain.


---------------
Il n'est pas nécéssaire de réussir pour persévérer.
n°301266
warp
Posté le 04-02-2003 à 18:12:54  profilanswer
 

C'est bien plus clair avec les balises cpp....  :)


---------------
Il n'est pas nécéssaire de réussir pour persévérer.
n°301275
Kristoph
Posté le 04-02-2003 à 18:30:10  profilanswer
 

Ce genre d'erreur ressemble a une corruption de pile ou même du tas et c'est pour cela que je te demandes la raison de cette reference :)

n°301990
warp
Posté le 05-02-2003 à 09:16:01  profilanswer
 

J'ai résolu le problème.
J'utilisais un char * qui n'était pas initialisé.
J'imagine que lors de la première utilisation, l'OS lui attribuait une taille précise, et que par la suite je dépassais cette taille......ou un truc du genre.
 
 
Pour ce qui est des string, je connais, en visual C++ les CString,
mais en C++ qu'est-ce qu'on doit utiliser ?
Parce que string n'est pas reconnu comme un tout,
String non plus, CString non plus ??


---------------
Il n'est pas nécéssaire de réussir pour persévérer.
n°302054
Kristoph
Posté le 05-02-2003 à 10:29:56  profilanswer
 

Code :
  1. #include <string>
  2. std::string s = "Hello";


 
ou
 

Code :
  1. #include <string>
  2. using namespace std;
  3. string s = "Hello";


n°302907
warp
Posté le 06-02-2003 à 09:23:42  profilanswer
 

Désolé, mais ça ne marche toujours pas....
 

Code :
  1. main.cpp: In function `int main()':
  2. main.cpp:26: `string' undeclared in namespace `std'
  3. main.cpp:26: parse error before `=' token
  4. make: *** [main] Erreur 1


 
Je suis sous Linux, y a peut-être une différence...? !
 
Ah, autre question :
pourquoi mets-tu
 

Code :
  1. #include <string>


 
et pas  
 

Code :
  1. #include <string.h>


---------------
Il n'est pas nécéssaire de réussir pour persévérer.

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

  Erreur de segmentation suite au passage à SuSE 8.1

 

Sujets relatifs
Excusez moi je jouer au boulet mais je capte pas une erreur java ...Erreur de compilation avec un makefile
[C] message d erreur a la compilation (linking)[ORACLE][PHP] erreur ORA-12154 intermittente
[Tomcat] Erreur lors du déploiement d'une web-app[C] Erreur 'multiple definition' à la compiliation !!?
[VB6] erreur 430 avec Windows 98 et le FileSystemObjectpassage de variables php<->javascript
Erreur en pascal, je pige pas???Passage par valeur ou par reference???
Plus de sujets relatifs à : Erreur de segmentation suite au passage à SuSE 8.1


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