c: перераспределить память, указанную членом структуры - PullRequest
0 голосов
/ 09 июля 2020
#define DEFAULT_SIZE 100

struct my_struct {
   struct some_struct *ptr;
   size_t len;
   char buf[0];
};

struct my_struct *s;

s = malloc(sizeof *s + DEFAULT_SIZE);
...

Теперь, если я хочу расширить память buf. Нужно ли мне воссоздавать struct my_struct * с вызовом realloc()? Разве я не могу просто перераспределить память, занимаемую buf, например:

realloc(s->buf, 2* DEFAULT_SIZE);

1 Ответ

1 голос
/ 09 июля 2020

Нет. Вы можете только realloc указатель, возвращаемый malloc. malloc дал вам указатель на всю структуру, так что вы можете realloc.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...