Как вы выделяете пространство, используя malloc для уже определенного массива? - PullRequest
0 голосов
/ 24 октября 2019

например у меня есть char buf [0];и теперь я хочу выделить больше места для этого массива, сделав его 8 байтов. Это часть задания, мне не разрешено создавать новый массив или динамически выделять его в первую очередь.

1 Ответ

0 голосов
/ 24 октября 2019

О распределении памяти в C

Память для объявленных переменных выделяется в стеке во время компиляции, и нельзя изменить во время выполнения. Для динамического выделения памяти во время выполнения вы используете. malloc() функция с указателем переменной, которая размещается в куче. Любая память в куче может иметь только переменную-указатель, которая указывает на память, и никакие регулярно объявленные переменные не могут ссылаться на эту память. Синтаксис:

type* ptr = (type*) malloc(sizeof(type)) * number_of_locations);

Перераспределение динамически выделяемой памяти malloc() без потери старых данных

Вы можете использовать функцию realloc().

ptr = (type*) realloc(ptr, sizeof(type)) * new_number_of_locations);

Во-вторых, char buf[0] не должен компилироваться, и даже если это не имеет никакого эффекта, и запись в него может привести к ошибке сегментации.

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