ndubien
Messages postés557Date d'inscriptiondimanche 25 septembre 2005StatutMembreDernière intervention10 mai 2014
-
29 avril 2009 à 17:04
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
29 avril 2009 à 21:03
Bonjour,
Je possède une variable unsigned long *ma_variable = malloc( sizeof(unsigned long) * 10 ); que je souhaiterais remplir de 0, j'ai alors penser à la fonction memset() mais le problème c'est que lorsque je fait memset(ma_variable,0,sizeof(ma_variable)); tous les caractères ne sont pas remis à zéro. Je me suis alors rendu sur MSDN et est trouvé cela http://msdn.microsoft.com/en-us/library/1fdeehz6(VS.71).asp : il semblerait que memset soit fait pour les char* et non les int*.
Puis-je utiliser memset() avec mon int *ma_variable ?
memset( ma_variable, 0, _msize(ma_variable) ); est-il la solution ?
TychoBrahe
Messages postés1309Date d'inscriptionsamedi 31 janvier 2009StatutMembreDernière intervention 5 juin 201312 29 avril 2009 à 17:28
Salut,
Commence déjà par regarder le prototype de memset :
void *memset(void *s, int c, size_t n);
En quoi est-ce que c'est fait pour les char* et non les int* ? Si elle prend un void* c'est pour tout accepter comme pointeur. maintenant relis son fonctionnement :
«The memset() function fills the first n bytes of the memory area pointed to by s with the constant byte c.» Rien qu'avec ça tu devrais réaliser ton erreur et la corriger. Au cas où tu peine, regarde plus précisément ce qu'est exactement le dernier paramètre de la fonction et compare avec ce que tu as écrit dans l'appel a memset et celui a malloc.