Я уверен, что ответ на этот вопрос я не понимаю, правильно ли указатели и ссылки!Развернуть массив с realloc внутри функции - Указатели?
Так в начале моего файла C Я определения структуры для людей:
typedef struct {
char id[4];
int age;
char name[128];
} people;
Тогда внутри основной() создать массив из 10 людей Структуры под названием запись.
people* record = (people*)malloc(sizeof(people)* 10);
В основной() мы начинаем, а затем нырять в функцию с
MyFunction(record);
(Прототип этой функции в начале файла C до основной() с
int MyFunction(people *record);
Внутри MyFunction() мы делаем различные вещи, в том числе желаем увеличить размер , чтобы он мог содержать больше люди structs. Я пытаюсь увеличить записи размера массива с
struct people *tmp = realloc(record, 20 * sizeof (people));
if (tmp)
{
record = tmp;
}
Но это не работает, и я получаю повреждение памяти при попытке использовать вновь добавленные в структуры массива.
Как я уже сказал, я уверен, что это связано с тем, что я не слишком занижаю Указатели и ссылки. Обратите внимание, что MyFunction() не может предоставить массив записи в качестве возвращаемого типа, потому что я уже использую его возвращаемый int для чего-то другого (и я не уверен, что я получу это для правильной работы либо !) - Мне нужно, чтобы он использовал основной массив .
Может ли кто-нибудь указать мне в правильном направлении, пожалуйста?
Вы передаете адрес записи не по адресу указателя. Вызывающая функция по-прежнему имеет старый адрес записи, назначенной старому указателю, хотя вызываемая функция уже перенесла запись на вновь выделенный диапазон адресов. – alvits