全局变量占用的内存有没有限制

heronism 2011-05-18 11:15:28
如题:
1.全局变量占用的内存大小有没有限制
2.如果没有限制,对于程序运行始终要用到的数据,用全局变量是不是比用动态内存好(避免了每次用到都申请,用完释放,这样造成内存碎片的可能)
...全文
649 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
aozhi 2011-05-18
  • 打赏
  • 举报
回复
1有限制,和操作系统的内存管理模式有关。具体的无法展开说明。请自己学习。
2显然不能那样,内存开销太大。全局变量是在整个进程结束后才还给OS。
就想叫yoko 2011-05-18
  • 打赏
  • 举报
回复
全局变量是一直不释放, 你得确定是否有这个必要
另外如果是只读的还好, 不然到处使用它, 又有地方修改了, 遇到多线程, 同步是个问题
我真的是琦琦 2011-05-18
  • 打赏
  • 举报
回复
LS的头像挺令人害怕的~~~~~
qq120848369 2011-05-18
  • 打赏
  • 举报
回复
主要还是从项目角度看比较好,因为内存不够用的情况肯定不是关键...

你要考虑是用static还是extern,你还得考虑内存碎片,还得考虑它是不是一个不变的常量..
ljt3969636 2011-05-18
  • 打赏
  • 举报
回复
1.我觉得理想状态能用整个2-3G的虚拟空间

2你一次申请程序退出时才能释放,不更浪费空间吗
全局变量本程序中谁都能访问,修改,再遇见多线程...结果....
booksoon 2011-05-18
  • 打赏
  • 举报
回复
其实用全局变量与用局部变量的考量并不是对内存有没有限制的问题,而是从程序的维护、易读、健壮等这些方面进行考虑。
heronism 2011-05-18
  • 打赏
  • 举报
回复
感谢各位高人指导,受益匪浅,优点缺点基本搞明白了,欢迎更多高手参与讨论
赵4老师 2011-05-18
  • 打赏
  • 举报
回复
很多需要7X24小时工作的服务程序不怕浪费内存,就怕内存泄漏、野指针、内存碎片。
所以才出现了很多各种各样的池,比如内存池、连接池、线程池……
赵4老师 2011-05-18
  • 打赏
  • 举报
回复
个人喜欢用全局变量。不够用就提示“已忽略多余数据”继续工作或者提示“预先分配的内存xxxx不够用,请修改源代码中定义的相关limits常量,重建可执行代码后再试”。
优点是不会出现内存泄漏、野指针、内存碎片等;
缺点是要仔细命名避免重名,还有可能导致CPU的Memory Cache命中率降低等。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧