Question en C (pointeur)
bonjour,
j'ai un message d'erreur en lançant un petit prog en C et je ne vois pas la cause. QQ peut-il m'aider SVP ?
Voilà ce que fait le prog :
Déclaration d'une fonction :
unsigned long ma_fct (long No, char **Nom);
char *Nom, *ptr;
main()
{
....
ptr= (char *)malloc(100 * sizeof (char));
ma_fct(1,&ptr);
...
}
Le progrmme s'arrete à l'appel de la fonction avec l'erreur :
(L'instruction à "0x00401c01" emploie l'adresse mémoire "0x000000000".La mémoire ne peut etre "written"
Merci beacoup
j'ai un message d'erreur en lançant un petit prog en C et je ne vois pas la cause. QQ peut-il m'aider SVP ?
Voilà ce que fait le prog :
Déclaration d'une fonction :
unsigned long ma_fct (long No, char **Nom);
char *Nom, *ptr;
main()
{
....
ptr= (char *)malloc(100 * sizeof (char));
ma_fct(1,&ptr);
...
}
Le progrmme s'arrete à l'appel de la fonction avec l'erreur :
(L'instruction à "0x00401c01" emploie l'adresse mémoire "0x000000000".La mémoire ne peut etre "written"
Merci beacoup
3 réponses
-
ContributeurSalut, pourquoi as tu **?
. .
\_/ -
>"0x00401c01" emploie l'adresse mémoire "0x000000000".
Pointeur NULL...
Vérifie que l'allocation est effective
@++
Vous hésitez entre Linux et Windows ?
Vous voulez dépenser du temps ou de l'argent ? -
Comme teebo, je te demanderai : pourquoi tu passes l'adresse du pointeur ?
C'est en général utile si tu veux que ce soit la fonction qui alloue l'espace mémoire pour le pointeur, mais là, tu le fais avant...
Ca va en plus etre malheureusement difficile de t'aider sans savoir un peu plus ce qu'est censée faire cette fonction.
@++
Vous hésitez entre Linux et Windows ?
Vous voulez dépenser du temps ou de l'argent ?-
-
@AbouSaidJe pense donc que l'allocation doit se faire à l'intérieur : c'est pour cela que tu passes un pointeur sur ton pointeur.
Tu n'as donc pas besoin de faire l'allocation avant.
Ca n'explique cependant pas l'erreur : normalement si l'alloc se fait à l'intérieur, la mémoire aura simplement été allouée pour rien et perdue.
Met toujours le pointeur à NULL et n'alloue rien avant l'appel pour voir si ça change qqchose.
@++
Vous hésitez entre Linux et Windows ?
Vous voulez dépenser du temps ou de l'argent ? -
@batmatmalheureusement, j'ai toujours la même erreur. C'est ce que j'avais fait au debut (sans allocation memoire) mais ça ne marchait pas.
-