В чем разница между структурой, которая содержит несколько других структур, и структурой, которая содержит несколько указателей на другие структуры?
В первом случае у вас есть по существу один большойструктура в смежной памяти.В случае «указателей на структуры» ваша основная структура содержит только адреса для подструктур, которые выделяются отдельно.
Способствует ли одно выполнение кода быстрее, чем другому?
Разница должна быть незначительной, но метод указателей будет немного медленнее.Это потому, что вы должны разыменовывать указатель при каждом доступе к подструктуре.
Использует ли один метод больше или меньше памяти?
В методе указателя используется number_of_pointers * sizeof(void*)
большеобъем памяти.sizeof(void*)
будет 4 для 32-битной и 8 для 64-битной.
Распределяется ли память в обоих случаях одновременно?
Нет,вам нужно пройти через каждый указатель в вашей основной структуре и выделить память для подструктур с помощью malloc ().
Заключение
Указатели добавляют слой косвенности к коду, который полезен для переключения подструктур или наличия нескольких указателей на одну и ту же подструктуру.Наличие различных мастер-структур, указывающих на общие подструктуры, в частности, может сэкономить немного памяти и время выделения.