Пожалуйста, выделите именно тот размер, который вам нужен: malloc(sizeof *node);
- если вы перейдете на 64-битную платформу, которая удваивает размер всех ваших членов, ваша старая 96-байтовая структура может занять 192 байта в новой среде.
Если у вас нет указателей ни на одну из struct Node
, которые вы создали, то я не думаю, что вам следует назначать их с malloc(3)
в первую очередь. malloc(3)
лучше всего, если ваше приложение требует, чтобы данные сохранялись вне области вызова текущей функции. Я ожидаю , что вы могли бы переписать свою функцию следующим образом:
struct Node node;
while(...){
//do stuff with node
}
или
while(...){
struct Node node;
//do stuff with node
}
в зависимости от того, хотите ли вы получить доступ к последнему узлу (первая версия) или нет (вторая версия).
Конечно, если вам действительно нужны эти структуры вне этого фрагмента кода, тогда вам нужно хранить ссылки на них где-то . Добавьте их в глобальный список, отслеживающий struct Node
объектов, или добавьте каждый из них к указателю next
предыдущего struct Node
, или добавьте каждый к соответствующему struct User
, который относится к их, что лучше для вашего приложения.