Я уже некоторое время интересовался этим: при использовании структур внутри массивов, что касается распределения памяти, лучше ли выделить новую структуру для каждая запись в массиве, или лучше выделить достаточно места в массиве для N структур.
//pointer based:
struct myStructure ** tmp = malloc(sizeof(struct myStructure *) * N);
tmp[0] = malloc(sizeof(struct myStructure));
tmp[0]->whatever = true;
//or structure in the array:
struct myStructure * tmp = malloc(sizeof(struct myStructure) * N);
tmp[0].whatever = true
Есть ли преимущества перед одним или другим? Я считаю, что использование второй формы - лучшая практика, потому что в итоге вы получаете меньше мелких вызовов malloc, но могут быть случаи, когда вы можете использовать только первый метод.
Есть какие-нибудь сведения об этом?
Спасибо!