begin process at 2012 05 28 04:55:53
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

acceder aux éléments d' un unsigned char **


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

acceder aux éléments d' un unsigned char **

vendredi 2 février 2007 à 18:13:17 | acceder aux éléments d' un unsigned char **

ththththth

Bonjour à tous !!!

J'ai un petit probleme pour acceder aux éléments d'un unsigned char**.

Un pti bout de code sera plus simple...

unsigned char **t = (unsigned char **)malloc(sizeof(unsigned char*)* 10*10);
int q, p;
for(q = 0; q < 10;  q++ )
{
   for(p = 0; p < 10;  p++ )
  {
//et là : tout ce que j ai essayé
     *t[q*10+p]=(unsigned char)255;
//ou
     **(q*10+p)=(unsigned char)255;
//ou
     t[q][p]=(unsigned char)255;
   }
}

A chaque fois je tombe sur un SEG FAULT.
Je ne peux pas manipuler de tableau à deux dimensions car je ne connais pas les tailles à l'avance dans mon prog.

Voila. C'est surement pas grand chose mais bon ... si quelqu'un peut m'aider .. Merci d'avance.


vendredi 2 février 2007 à 18:40:07 | Re : acceder aux éléments d' un unsigned char **

laurent1024

Membre Club
tu alloue un unsigned char**
donc quand tu fait t[q][p] ou t[q*10+p] l'élément correspondant est un pointeur sur un unsigned char. Ce pointeur n'est pas alloué donc c'est normal qu'il y est des plantages mémoire

vendredi 2 février 2007 à 20:30:22 | Re : acceder aux éléments d' un unsigned char **

acx01b

salut

le problème c'est: un pointeur ce n'est pas un tableau, l'opérateur [] c'est le même opérateur que * mais dont la syntaxe est différente

après avoir alloué une zone mémoire avec malloc, quand tu fais
t[q][p] , en fait tu fais (t[q])[p]:
c'est à dire unsigned char* x = t[q]
et ensuite x[p]
seulement x=t[q] a une valeur indéterminée, qui pointe vers on ne sait où
ou pire ce x peut valoir 0
en faisant x[p] si x = 0 ça veut dire que tu essayes de lire ce qu'il y a à l'adresse 0 ...  voilà la raison du seg fault

il faudrait que tu fasse
int i = 10;
for (i=0; i < 10; i++) t[i] = malloc(sizeof * t[i] * 10);
// sizeof *t[i] <=> sizeof (unsigned char) dans ton cas
// c a dire que *t[i] est un unsigned char

enfin regarde ce que donne
    char x[5][5];
    printf("%p %p %p %p %p %p", x, &x, x[0], &x[0], &x[0][0], x[0][0]);

a+
vendredi 2 février 2007 à 21:00:47 | Re : acceder aux éléments d' un unsigned char **

SAKingdom

Membre Club
Allocateur pour pointeur de pointeurs à cette adresse
Très simple d'utilisation et beaucoup plus performant qu'allouer la mémoire pour chaque pointeur séparément.

C++ (@++)



Cette discussion est classée dans : for, char, acceder, éléments, unsigned


Répondre à ce message

Sujets en rapport avec ce message

Problème en tête bitmap [ par piroman14 ] Slt tt le monde!Je rencontre un petit problème dans mon algorithme. En effet, je n'arrive pas à coder l'en-tête d'une image bitmap correctement. J'obt POINTEUR (C) sur plusieurs structures (0 Lectures) [ par skouby ] Bonjourje voulais essayer de réussir tout seul , ..mais mes yeux clignotent :SAlors je me met a vos pieds lolje programme un tachymetre en C avec SDCC Utilisation du type unsigned char [ par zaraki21 ] Bonjour, Je développe actuellement une application en C/C++ pour un périphérique "embarqué" et je dois utiliser le type unsigned char. Je sais que ce Allocation dynamique tableau 2D : erreur de seg [ par noname001 ] Bonjour à tous, [^^happy13] j'aimerais faire appel à vos lumières concernant deux codes. Ils ont tous les deux pour but de créer un tableau 2D dynami pointeur à la fin "\0" [ par avg ] j'ai une fonction qui demande un pointeur sur unsigned char mais il faut qu'il contient à la fin "\0" comment je peut faire [code=cpp] unsigned char


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,359 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales