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

  FORUM HardWare.fr
  Programmation
  C

  Fonction renvoyant pointeur de structure [Résolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Fonction renvoyant pointeur de structure [Résolu]

n°1515762
ngkreator
Posté le 16-02-2007 à 20:10:20  profilanswer
 

Salut à tous, après un problème de programme qui plante j'ai récrit un programme simple qui m'a permit de générer la même erreur. J'ai crée une fonction qui renvoie un pointeur vers une structure. Cette fonction plante!
 
Par exemple en exécutant ce programme:
 

Code :
  1. #include <stdio.h>
  2. typedef struct{
  3.     int **pointeur;
  4.     int valeur;
  5. }t_struct;
  6. t_struct *renvoiePointeur()
  7. {
  8.     t_struct *p;
  9.     printf("A\n" );
  10.     p->valeur = 1;
  11.     printf("B\n" );
  12.     return p;
  13. }
  14. int main(int argc, char **argv)
  15. {
  16.     t_struct *data;
  17. data = renvoiePointeur();
  18. return 0;
  19. }


 
La console ne m'affiche que le caractère "A" et se bloque. Cela montre bien que c'est l'instruction p->valeur = 1; qui bloque le programme. Je ne comprend pas pourquoi le fait d'affecter 1 à variable fait planter le programme.
 
J'espère que quelqu'un pourra m'aider. Merci :jap:


Message édité par ngkreator le 17-02-2007 à 09:05:08
mood
Publicité
Posté le 16-02-2007 à 20:10:20  profilanswer
 

n°1515767
nyrk
Posté le 16-02-2007 à 20:19:40  profilanswer
 

Tu n'alloues pas ta structures. Ton pointeur pointe vers une zone non-allouée. Ton compilateur aurait dû te donner un warning pour la ligne "p->valeur = 1" pour cause de non initialisation de ton pointeur.

n°1515768
ngkreator
Posté le 16-02-2007 à 20:25:32  profilanswer
 

nyrk a écrit :

Tu n'alloues pas ta structures. Ton pointeur pointe vers une zone non-allouée. Ton compilateur aurait dû te donner un warning pour la ligne "p->valeur = 1" pour cause de non initialisation de ton pointeur.

Mais oui suis-je bète! :pfff:  Un grand merci nyrk! :jap:
 
Sinon le compilateur ne m'a donné aucun warning.
 
Si jamais des gars ayant eu le même problème tombent sur le topic voilà ce que j'ai modifié dans la fonction:
 
Avant

Code :
  1. t_struct *p


Après

Code :
  1. t_struct *p = malloc(sizeof(t_struct));


Message édité par ngkreator le 16-02-2007 à 20:35:17
n°2183475
timotheega​briel
Aime ton prochain comme toi m
Posté le 01-04-2013 à 20:51:20  profilanswer
 

Merci Les gars.


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

  Fonction renvoyant pointeur de structure [Résolu]

 

Sujets relatifs
[résolu] Probleme d'appel d'un objet dans ma classeDifférence IE/Firefox [Résolu]
[Ruby] [Resolu] Nettoyage de caractères accentués-=Fin d'une fonction=- et -=lien entre deux classes=-
[html] mailto + modification adresse mail [Résolu]probleme d'overflow avec variables type Double [résolu]
VBA - application.match et Majuscules [Résolu]Fonction definie, mais en fait... non???
VUE javais pas vue... [RESOLU] 
Plus de sujets relatifs à : Fonction renvoyant pointeur de structure [Résolu]


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