Problème avec memset [Résolu]

Messages postés
557
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
10 mai 2014
- - Dernière réponse : fregolo52
Messages postés
1108
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
- 30 avril 2009 à 09:24
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 !
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
1108
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
4
3
Merci
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)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 122 internautes nous ont dit merci ce mois-ci

Commenter la réponse de fregolo52
Messages postés
417
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
19 décembre 2013
0
Merci
Salut,

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

http://liveplayaz.com

je suis heureux de faire partie d'une grande famille ...!
Commenter la réponse de nickydaquick
Messages postés
557
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
10 mai 2014
2
0
Merci
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 !
Commenter la réponse de ndubien
Messages postés
1108
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
4
0
Merci
bah ton principe est bon, tu as juste fait une erreur sur la notion de pointeur.
Commenter la réponse de fregolo52