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

  FORUM HardWare.fr
  Programmation

  [C++]Un truc bizarre!

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++]Un truc bizarre!

n°41859
yush
Posté le 21-06-2001 à 19:27:50  profilanswer
 

J'ai un truc un peu bizarre dans mon code.
J'ai cree un buffer avec malloc et une variable temporaire ( char temp[1] ).
Quand je lis ou j'ecris ds le buffer il n'y a aucun probleme.
temp[0]=buffer[2] <== ca marche.
Mais lorsque je remplis ce buffer avec un bout de fichier avec la fonction fread, je ne peux plus ni lire, ni ecrire ds le buffer alors que ce marche avant fread!
Le compilo compile mais c'est lors de l'execution du programme que j'ai un gros message d'erreur venant de windows.
Comment ca se fait et comment puis je faire pour que ca marche?

mood
Publicité
Posté le 21-06-2001 à 19:27:50  profilanswer
 

n°41872
janoscoder
Posté le 21-06-2001 à 19:56:40  profilanswer
 

Ben c'est quoi le message? Et le code?

n°41889
yush
Posté le 21-06-2001 à 21:33:46  profilanswer
 

Le message d'erreur de windows est "Ce programme va etre arrete car il a effectue une operation non conforme".La routine koa.
Et le bout de code:
buffer = (char *) malloc ( width * height * ( bpp/8));
 
 if ( buffer == NULL)
 {
  printf("Erreur lors de l'allocation de memoire\n" );
 }
 
 temp[0]=buffer[2]; // la, on peut lire et ecrire ds le buffer.
 if ( bpp == 24)
 {
  int i=0;
  fseek ( fp, 18, SEEK_SET);
  verif = fread ( &buffer , sizeof (buffer), 1, fp);
  if ( verif != 1)
  {
   printf("Erreur lors de la lecture de l'image\n" );
  }
  else  
  {
   printf("Lecture OK\n" );
  }
  fclose ( fp);
 temp[0]=buffer[2];    <
 temp[1]=buffer[0];    < la ca marche plus et j'ai le message.

n°41890
BifaceMcLe​OD
The HighGlandeur
Posté le 21-06-2001 à 21:46:53  profilanswer
 

Comment est déclaré temp ?

n°41894
yush
Posté le 21-06-2001 à 21:53:49  profilanswer
 

Citation :

BifaceMcLeOD Comment est déclaré temp ?  


 
comme ca:
char temp[2];

n°41902
BifaceMcLe​OD
The HighGlandeur
Posté le 21-06-2001 à 22:06:45  profilanswer
 

Je viens de voir l'erreur.
Tu as écris :

Code :
  1. verif = fread ( &buffer , sizeof (buffer), 1, fp);


 
Ce qui signifie que tu modifies ici le pointeur buffer et non pas la zone mémoire qu'il pointe. Et évidemment, après buffer va pointer sur n'importe quoi, et le premier accès à la zone nouvellement pointée fera SEGV...
 
A mon avis, tu dois écrire:

Code :
  1. verif = fread ( buffer , buffer_length, 1, fp);


avec un buffer_length initialisé comme suit avant :

Code :
  1. int buffer_length =  width * height * ( bpp/8);
  2. buffer = (char *) malloc (buffer_length * sizeof(char));

n°42026
yush
Posté le 22-06-2001 à 12:35:48  profilanswer
 

En effet, c'etait bien ca..
C'est vrai que je me suis toujours enmelés les pinceaux avec les pointeurs.
Heureusement que tu etais la car j'aurais jamais trouve tout seul.
Je me pose quand meme question. Qu'est ce qui te pousse a repondre a des questions comme les miennes sur un forum de prog. Paske tu est quand un monstre de laprog (sisi). Ca t'aide pour ton boulot de rechercher des erreurs, tu le fais paske kkun t'as aide lorsque tu debutais, ou justement personne ne t'as aide....
Mais en tout cas c'est vraiment super sympa.Merci bien
@++.

n°42029
tgrx
My heart is pumping for love
Posté le 22-06-2001 à 12:58:36  profilanswer
 

Yush a écrit a écrit :

Paske tu est quand un monstre de laprog (sisi).




 
:sol: tranquille le biface

 

[edit]--Message édité par tgrx--[/edit]

n°42208
BifaceMcLe​OD
The HighGlandeur
Posté le 22-06-2001 à 19:08:47  profilanswer
 

Non, je ne me considère pas comme un monstre de la programmation ;)
Par contre, j'aime bien aider les gens. Chose que je faisais déjà j'étais étudiant (avec mes copains de promo).
 
Et puis débarquer dans un code que tu n'as pas écrit et arriver à en trouver les erreurs rapidement est un exercice intellectuel très intéressant (quoi que difficile, je suis très loin d'y arriver), et qui en plus (là oui) me sert dans mon travail.

n°42250
yush
Posté le 22-06-2001 à 23:18:50  profilanswer
 

Depuis combien d'annee tu programme.
(tu remarqueras que je ne te demande pas le nombre d'heure passer a programmer!).
Et t'as fait quoi comme parcours scolaire?.
Sinon ca marche et j'ai fini mon loader de fichier TGA.

mood
Publicité
Posté le 22-06-2001 à 23:18:50  profilanswer
 

n°42251
BifaceMcLe​OD
The HighGlandeur
Posté le 22-06-2001 à 23:30:33  profilanswer
 

Je suis tombé dans la programmation étant petit... :D
Sinon, j'ai un diplôme d'ingénieur (je cite) "spécialisé en techniques informatiques" depuis 4 ans (ceux qui connaissent ce titre devraient reconnaître d'où je viens :D ).


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

  [C++]Un truc bizarre!

 

Sujets relatifs
Newbies en PHP, juste un ptit truc de rien du tout[C++] Y a un truc que je pige pas avec les class
Forum W-Agora : pas trouve un truc=>[PHP] Help Truc Tous CON !
Juste un dernier truc de finition --> C++, toujours MFC !!!c++ : bizarre bizarre
[C/C++] Très grands débutants - Caractère bizarre[C++] Un problème bizarre ....
[javascript] un truc simple...un truc comme like en SQL ...
Plus de sujets relatifs à : [C++]Un truc bizarre!


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