Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct header {
- size_t len;
- unsigned char data[];
- };
- struct header {
- size_t len;
- unsigned char data[1];
- };
- ptr = malloc(sizeof(struct header) + (n-1));
- struct header
- {
- size_t len;
- unsigned char data[];
- };
- unsigned char data[0];
- foo = malloc(sizeof(header) + N * sizeof(data[0]));
- foo->len = N;
- struct header
- {
- size_t len;
- unsigned char *data;
- };
- struct header *my_header
- = malloc(offsetof(struct header, data) + n * sizeof my_header->data);
- #define FLEXIBLE_SIZE SIZE_MAX /* or whatever maximum length for an array */
- #define SIZEOF_FLEXIBLE(type, member, length)
- ( offsetof(type, member) + (length) * sizeof ((type *)0)->member[0] )
- struct header {
- size_t len;
- unsigned char data[FLEXIBLE_SIZE];
- };
- ...
- size_t n = 123;
- struct header *my_header = malloc(SIZEOF_FLEXIBLE(struct header, data, n));
- struct header *my_header = malloc(sizeof *my_header);
- struct header {
- size_t len;
- unsigned char *data;
- };
- struct header *p;
- p = malloc(sizeof(*p) + len + 1 );
- p->data = (unsigned char*) (p + 1 ); // memory after p is mine!
Add Comment
Please, Sign In to add comment