5
在C中为模块化固件设计分配内存的可能性
模块化方法通常非常方便(便携式且简洁),因此我尝试将模块编程为尽可能独立于其他模块。我的大多数方法都是基于描述模块本身的结构。初始化函数设置主要参数,然后将处理程序(目标字符串的指针)传递给模块内部调用的任何函数。 现在,我想知道为模块描述结构的最佳分配内存方法是什么。如果可能,我想要以下内容: 不透明的结构,因此只能通过使用提供的接口功能来更改结构 多个实例 链接器分配的内存 我看到以下可能性,所有这些都与我的目标之一冲突: 全球宣言 多个实例,由链接器分配,但是struct不是不透明的 (#includes) module_struct module; void main(){ module_init(&module); } 分配 不透明的结构,多个实例,但在堆上分配 在module.h中: typedef module_struct Module; 在module.c初始化函数中,malloc并返回指向已分配内存的指针 module_mem = malloc(sizeof(module_struct )); /* initialize values here */ return module_mem; 在main.c中 (#includes) Module *module; void main(){ module = module_init(); } 模块中的声明 链接器分配的不透明结构,仅预定义数量的实例 将整个结构和内存保留在模块内部,并且永远不要公开处理程序或结构。 (#includes) void main(){ module_init(_no_param_or_index_if_multiple_instances_possible_); …