LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1075|回复: 6

请教一下这两种方案哪种更好一点?

[复制链接]
发表于 2006-1-20 19:20:53 | 显示全部楼层 |阅读模式
一个c文件里,我有一个extern函数用来被主函数调用,还有很多个static的内部函数。这个文件里我有一个比较大的结构体(比如说需要分配2K空间)需要被所有这个文件里的函数共享!我是把这个结构体定义在文件的开头作为全局变量好呢?还是只定义这个结构体的指针为全局变量,然后在初始化的时候为这个结构体分配内存在退出时候把内存释放这样好呢?为什么?
发表于 2006-1-22 01:34:18 | 显示全部楼层
我觉得都可以,我选前者
回复 支持 反对

使用道具 举报

发表于 2006-1-22 09:08:22 | 显示全部楼层
可以单独建立一个存放全局变量的头文件global.h,这样管理起来要方便一些。
回复 支持 反对

使用道具 举报

发表于 2006-1-22 13:16:29 | 显示全部楼层
Post by kj501
可以单独建立一个存放全局变量的头文件global.h,这样管理起来要方便一些。

这办法不错:thank
回复 支持 反对

使用道具 举报

发表于 2006-1-22 20:44:19 | 显示全部楼层
如果做的是一个库,并且可能会被多线程的程序调用,最好将初始化后会变化的变量保存在一个结构之中。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-23 08:44:07 | 显示全部楼层
Post by herberteuler
如果做的是一个库,并且可能会被多线程的程序调用,最好将初始化后会变化的变量保存在一个结构之中。

为什么?原理?
回复 支持 反对

使用道具 举报

发表于 2006-1-23 10:06:20 | 显示全部楼层
像多进程中一样,多线程程序要考虑同步问题。如果是初始化后就不再变化的变量(或者说叫常量),并不会有什么影响。如果一个变量在本不该被修改的时候被一个线程修改了,就有可能对其他的线程造成影响。因此,最好每个线程都拥有一套这样的变量,以免出现奇怪的错误。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表