【发布时间】:2011-11-15 15:31:02
【问题描述】:
我有以下头文件:
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);
}
我想在不使用 malloc 的情况下在静态内存中创建 my_data_t 的实例。我想通过在头文件中添加以下内容来做到这一点:
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 的实际数据结构隐藏在实现它的代码中。 欢迎任何其他关于如何实现目标的建议。谢谢。
【问题讨论】: