I\'m tasked to create a program which dynamically allocates memory for a structure. normally we would use
x=malloc(sizeof(int)*y);
However,
struct st *x = (struct st *)malloc(sizeof(struct st));
My favorite:
#include <stdlib.h>
struct st *x = malloc(sizeof *x);
Note that:
x
must be a pointerstruct st* x = malloc( sizeof( struct st ));
It's exactly possible to do that - and is the correct way
Assuming you meant to type
struct st *x = malloc(sizeof(struct st));
ps. You have to do sizeof(struct) even when you know the size of all the contents because the compiler may pad out the struct so that memebers are aligned.
struct tm {
int x;
char y;
}
might have a different size to
struct tm {
char y;
int x;
}
This should do:
struct st *x = malloc(sizeof *x);
You're not quite doing that right. struct st x
is a structure, not a pointer. It's fine if you want to allocate one on the stack. For allocating on the heap, struct st * x = malloc(sizeof(struct st));
.