C89 gcc (GCC) 4.7.2
你好,
我正在维护某人的软件,我发现这个函数返回静态结构的地址。这应该没问题,因为静态表示它是全局的,因此结构的地址将可用,直到程序终止。
DRIVER_API(driver_t*) driver_instance_get(void)
{
static struct tag_driver driver = {
/* Elements initialized here */
};
return &driver;
}
像这样使用:
driver_t *driver = NULL;
driver = driver_instance_get();
驱动程序变量在整个程序中使用,直到它终止。
一些问题:
- 这样做是个好习惯吗?
- 在文件级别的函数之外声明它有什么区别吗?
- 为什么不将内存池传递给函数并为结构分配内存,以便在堆上声明结构?
非常感谢您的任何建议,