У меня есть следующий заголовочный файл:
typedef struct my_data my_data_t;
my_data_t* new_my_data(void);
void free_my_data(my_data_t* my_data);
И соответствующий файл c:
typedef struct my_data
{
int val;
} my_data_t;
my_data_t* new_my_data()
{
my_data_t* ptr = (my_data_t*)malloc(sizeof(my_data_t));
return ptr;
}
void free_my_data(my_data_t* my_data)
{
free(my_data);
}
Я хотел бы создать экземпляр my_data_t в статической памяти без использования malloc.Я хотел бы сделать это, добавив следующее в файл заголовка:
int sizeof_my_data(void);
... и это в файл c:
int sizeof_my_data()
{
return sizeof(my_data_t);
}
... и сделав что-товот так:
static my_data_t* my_data_instance = static_alloc(sizeof_my_data());
Возможно ли это? Я хотел бы сделать это, потому что целевой машиной для этого кода является микропроцессор, который не обрабатывает malloc (в нашем случае, лучше, чтобы все структуры содержались в статической памяти), и я хотел бы сохранитьфактическая структура данных my_data скрыта от кода, который ее реализует. Любые другие предложения о том, как достичь цели, приветствуются.Благодаря.