Je suis chargé de créer un programme qui alloue dynamiquement de la mémoire pour une structure. normalement, nous utiliserions
x=malloc(sizeof(int)*y);
Cependant, que dois-je utiliser pour une variable de structure? Je ne pense pas que ce soit possible
struct st x = malloc(sizeof(struct));
Est-ce que quelqu'un peut m'aider? Merci!
Mon préféré:
#include <stdlib.h>
struct st *x = malloc(sizeof *x);
Notez que:
x
doit être un pointeurVous ne faites pas tout à fait ça. struct st x
Est une structure, pas un pointeur. C'est bien si vous voulez en allouer un sur la pile. Pour l'allocation sur le tas, struct st * x = malloc(sizeof(struct st));
.
struct st* x = malloc( sizeof( struct st ));
C'est exactement possible de le faire - et c'est la bonne façon
En supposant que vous vouliez taper
struct st *x = malloc(sizeof(struct st));
ps. Vous devez faire sizeof (struct) même lorsque vous connaissez la taille de tout le contenu car le compilateur peut remplir la structure afin que les membres soient alignés.
struct tm {
int x;
char y;
}
pourrait avoir une taille différente de
struct tm {
char y;
int x;
}
Cela devrait faire:
struct st *x = malloc(sizeof *x);
struct st *x = (struct st *)malloc(sizeof(struct st));