Je dois allouer une structure depuis une autre fonction, évidemment en utilisant des pointeurs. J'ai regardé ce problème pendant des heures et j'ai essayé de le résoudre d'un million de façons différentes.Malloc à l'intérieur d'une autre fonction
C'est un exemple de code (très simplifié):
...
some_struct s;
printf("Before: %d\n", &s);
allocate(&s);
printf("After: %d\n", &s);
...
/* The allocation function */
int allocate(some_struct *arg) {
arg = malloc(sizeof(some_struct));
printf("In function: %d\n", &arg);
return 0;
}
Cela ne me donne la même adresse avant et après l'attribution d'appel:
Before: -1079752900
In function: -1079752928
After: -1079752900
Je sais qu'il est probablement parce qu'il fait une copie dans la fonction, mais je ne sais pas comment réellement travailler sur le pointeur que j'ai donné comme argument. J'ai essayé de définir some_struct * s au lieu de some_struct, mais pas de chance. J'ai essayé avec:
int allocate(some_struct **arg)
qui fonctionne très bien, mais d'après la cession (le doit être modifiée fonction allouer ainsi) Je ne peux pas changer la déclaration, et il doit être * arg .. Et ce serait plus correct si je dois juste déclarer un_struct s .. Pas un_struct * s. Le but de la fonction d'allocation est d'initialiser un struct (un some_struct), qui inclut également l'allouer.
Encore une chose que j'ai oublié de mentionner. Le retour 0 dans la fonction d'allocation est réservé pour certains messages d'état et je ne peux donc pas retourner l'adresse en utilisant ceci.
Quel est le véritable but de la fonction 'allocate'? – Earlz
Si vous devez passer un '' some_struct', et allouer de la mémoire dans la fonction à assigner, l'affectation est impossible. Pourriez-vous poster plus de détails sur la mission, et à peu près ce que vous êtes censé apprendre? –
Oh, et quand vous postez plus de détails, la bonne chose à faire ici est d'éditer votre question pour les inclure. Vous semblez être nouveau ici, et probablement ne connaissez pas l'étiquette SO. –