[2IR][C/C++] gcc W$ vs Linux.

Voir le sujet précédent Voir le sujet suivant Aller en bas

resolu [2IR][C/C++] gcc W$ vs Linux.

Message  galaeron le Mar 01 Nov 2011, 17:09

Attention ceci est très très mauvais, et ne constitue pas un exemple à reproduire !

J'ai (par hasard), mit en évidence une différence entre gcc et sa version portée sur Windows ...

Principe de la différence : L'assignation d'une valeur a la variable pointée par un pointeur (de n'importe quel type (structure comprises)) non initialisé sur W$ est possible (avec restriction puisque cela ne peut se faire qu'une seule fois) tandis que sur linux, ceci (comme prévu) renvois une segmentation fault ...

Environnement :
  1. Windows : Installation Eclipse "traditionnelle" ("recommandée" par l'école)
  2. Linux: Ubuntu et gcc


Options de compilation : -O0 -g3 -pedantic -pedantic-errors -Wall -c -fmessage-length=0 -v -ansi
On notera que avec une -Werror (Warning as errors) Eclipse refuse de compiler aussi ...

Code à tester :

Code:
#include <stdio.h>
#include <stdlib.h>
struct bidule{
   int iUn;
   int iDeux;
   float fUn;
};
int main(void) {
   struct bidule * structure;
/*    int *j; *j=5; */

/*
 *    On notera que, comme préciser si dessus, si on dé commente la ligne précédente le programme va simplement crashé sans donné la cause (seg_fault)
*/
   structure->iUn=5;
   structure->fUn=3;
        printf("%d,%f",structure->iUn,structure->fUn);
   return EXIT_SUCCESS;
}

Warning d'Eclipse : "'structure' is used uninitialized in this function"

Ma question est donc : Eclipse réserve il la place pour une "structure bidule" en mémoire ? Visiblement oui ... en plus de réserver l'espace pour un pointeur, mais où place il cette structure ... et d'ou vient cette limitation d'une seule fois ...

Merci d'avance!



PS : Je suis tout à fait conscient que malloc est la solution, mais j'aimerais comprendre pourquoi ... ça marche et pourquoi une fois ...


Dernière édition par galaeron le Ven 04 Nov 2011, 09:12, édité 1 fois

galaeron

Nombre de messages : 113
Age : 28
Prénom : Arthur
Statut : 3IR12
Date d'inscription : 29/06/2011

Revenir en haut Aller en bas

resolu Re: [2IR][C/C++] gcc W$ vs Linux.

Message  nvs le Mar 01 Nov 2011, 17:40

comportement indéterminé...








Rolling Eyes

_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

resolu Re: [2IR][C/C++] gcc W$ vs Linux.

Message  jonas le Mer 02 Nov 2011, 09:55

galaeron a écrit:Eclipse refuse de compiler

ps: ce n'est pas Eclipse qui refuse de compiler...

je veux dire... Eclipse n'est pas un compilateur.


Dernière édition par jonas le Mer 02 Nov 2011, 10:01, édité 2 fois

jonas

Nombre de messages : 234
Prénom : Jonathan
Statut : Ancien industrialisé
Localisation : Devant son clavier BÉPO !
Date d'inscription : 29/09/2008

http://www.xax.be

Revenir en haut Aller en bas

resolu Re: [2IR][C/C++] gcc W$ vs Linux.

Message  galaeron le Mer 02 Nov 2011, 10:00

En effet ma phrase était mal formulée ... Tout comme Eclipse ne réserve pas d'espace mais gcc for W$ si ...
Abus de langage détectés!

galaeron

Nombre de messages : 113
Age : 28
Prénom : Arthur
Statut : 3IR12
Date d'inscription : 29/06/2011

Revenir en haut Aller en bas

resolu Re: [2IR][C/C++] gcc W$ vs Linux.

Message  Contenu sponsorisé Aujourd'hui à 18:57


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum