Erreur de Segmentation

Erreur de Segmentation - C++ - Programmation

Marsh Posté le 23-02-2003 à 16:39:08    

Ou est le problème ???
 

Code :
  1. #include <stdio.h>
  2. void test(unsigned char*i);
  3. void test(unsigned char*i)
  4. {
  5. printf("Mon nombre : %i",*i);
  6. }
  7. int main(void)
  8. {
  9. unsigned char*j=0;
  10. *j=5;
  11. test(j);
  12. return 0;
  13. }

Reply

Marsh Posté le 23-02-2003 à 16:39:08   

Reply

Marsh Posté le 23-02-2003 à 16:42:55    

C'est vraiment n'importe quoi.

Reply

Marsh Posté le 23-02-2003 à 16:43:37    

si tu joues avec de la mémoire, faudrait ptet l'allouer...

Reply

Marsh Posté le 23-02-2003 à 16:43:37    

Pourquoi, argumente ?

Reply

Marsh Posté le 23-02-2003 à 16:43:56    

Exact ...

Reply

Marsh Posté le 23-02-2003 à 20:36:55    

unsigned char * j : c'est un pointeur ca, tu peux pas faire = 0 comme ça, la zone memoire pointée ne sera pas valide.

Reply

Marsh Posté le 23-02-2003 à 20:39:53    

plus que pas valide, je dirai meme invalide (en effet 0, c'est en fait NULL)
 
si tu connais pas l'allocation dynamique, tu peux quand meme jouer

Code :
  1. int main(void)
  2. {
  3. unsigned char c;
  4. unsigned char *j=&c;
  5. *j=5; // hop, c==5
  6. test(j); // ou test(&c)
  7. return 0;
  8. }

Reply

Marsh Posté le 23-02-2003 à 21:05:24    

++Taz a écrit :

plus que pas valide, je dirai meme invalide (en effet 0, c'est en fait NULL)


Ah ? Je croyais que ca pouvais etre -1 selon les plateformes...

Reply

Marsh Posté le 23-02-2003 à 21:16:04    

R3g a écrit :


Ah ? Je croyais que ca pouvais etre -1 selon les plateformes...


 
si tu es en C++ c'est toujours 0
(en fait c'est le literal zero qui ne prejuge
en rien de sa representation mémoire).
 
Sinon NULL est toujours une macro et pas un mot  
du langage.
 
LeGreg
 


---------------
voxel terrain render engine | animation mentor
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed