Problème avec memset [Résolu]

Signaler
Messages postés
557
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
10 mai 2014
-
Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
-
Bonjour, je dispose d'une fonction qui alloue de la mémoire à un tableau puis le remplie de 0 grâce à memset(), mais le problème est que se remplissage ne fonctionne pas:

void fx( unsigned long **nb ) {

*nb = (unsigned long*) malloc( sizeof(unsigned long) * (unsigned long) 256 );

memset( *nb, 0, sizeof(*nb) );

int i;

for( i=0 ; i!=256 ; ++i ) { printf( "%ld", (*nb)[i] ); (*nb)[i] = 0; }

}

unsigned long *nb;

fx( &nb );

Le printf affiche: 04156696000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000

D'où provient le problème, que faire ?

Merci d'avance et à bientôt !

4 réponses

Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
4
salut,

memset( *nb, 0, sizeof(*nb) );

*nb est un pointeur donc sizeof(*nb) te retourne la taille du pointeur, donc la taille de l'adresse donc 4 (Windows 32et64bit, Linux 32bit) ou 8 si tu es sous Linux 64bit (si je fais pas d'erreur)
Messages postés
416
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
19 décembre 2013
2
Salut,

memset(*nb,0, 256*sizeof(unsigned long) );

http://liveplayaz.com

je suis heureux de faire partie d'une grande famille ...!
Messages postés
557
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
10 mai 2014
3
En fait j'ai une variable:

unsigned long **nb;

que je souhaite transmettre à une fonction pour qu'elle le modifie mais ne sait pas comment faire !
Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
4
bah ton principe est bon, tu as juste fait une erreur sur la notion de pointeur.