Предполагается, что по какой-то причине вам разрешено использовать статическую память только в программе на Си.
У меня есть базовая структура, которую я использую в нескольких местах, определенных ниже:
#define SMALL_STUFF_MAX_SIZE 64
typedef struct {
/* Various fields would go here */
...
double data[SMALL_STUFF_MAX_SIZE]; /* array to hold some data */
} SmallStuff;
Теперь меня попросили добавить новую функцию, которая привела бы к конкретному случаю, когда мне нужна та же структура, но с гораздо большим массивом. Я не могу позволить себе увеличить массив структуры SmallStuff, так как память слишком тесна. Поэтому я создал специальную версию структуры, определенной ниже, которую я в конечном итоге приводил к (SmallStuff *) при вызове функций, ожидающих указатель на структуру SmallStuff (фактический размер «данных» правильно обрабатывается в этих функциях) *
#define BIG_STUFF_MAX_SIZE 1000000
typedef struct {
/* Various fields, identical to the ones in SmallStuff would go here */
...
double data[BIG_STUFF_MAX_SIZE]; /* array to hold some data */
} BigStuff;
Очевидно, что правильный способ сделать это - динамически распределять память, но, как сказано выше, я не могу использовать динамическое выделение памяти.
Есть ли побочные эффекты, которые я должен учитывать?
Или лучшие способы решения этой проблемы?
Заранее спасибо.