游戏开发论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: 超级地球

静态分配内存和new动态分配在游戏中有什么区别????

[复制链接]

2

主题

5

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2005-5-9 20:47:00 | 显示全部楼层

Re:静态分配内存和new动态分配在游戏中有什么区别????

C/C++中有三种内存分配形式:

1、静态分配:全局变量和static变量都分配在静态区,大小没有明确限制,直到程序消亡的时候才会释放

2、栈分配:局部变量(自动变量)、临时变量都分配在栈里,一般大小作了限制,如vc是32kb, gcc是1M。随着过程的结束(局部变量)或者表达式计算完毕(临时变量)而消亡

3、堆分配:使用 new/malloc建立的内存通常在堆里面,大小没有明确限制,可以在程序执行的任何时候进行手工回收,在进程完全结束的时候也会回收。这是最复杂的一种方式,灵活性最大。但由于是动态创建,但从程序本身看不出将会占用多少内存,不按时释放往往会造成大量内存的浪费,内存泄露也是没有及时回收造成的。
--------------------------------------------------------------------------------------------------------------------------

我有个疑惑,比如建了一个房屋类 CHouse

然后在另一个类的头文件声明中 这样定义了一个对象数组 CHouse house[10000];

我觉得在一个类的头文件的声明中定义的数组肯定是全局变量,对不对?

那这个内存分配是不是分配在静态区中?

既然是分配在静态区中而不是分配在栈中,那也就不存在栈的溢出问题了,不过这样的话不就和上面各位的讨论有一点点自相矛盾啊!我是菜鸟,不懂,请各位大侠指教。

10

主题

525

帖子

525

积分

高级会员

Rank: 4

积分
525
发表于 2005-5-10 17:08:00 | 显示全部楼层

Re:静态分配内存和new动态分配在游戏中有什么区别????

同意2楼的意见,个人倾向喜欢静态的,为了降低对于系统内存的消耗,可以规划一下类的使用,其实类这个东西是不错,不过有的时候用多了,不见得是好事,如果程序不是太多的人一起完成,我是能不用类就不用类的,或者让类的使用尽量单一,因为有的时候必须在许多方面找到平衡点。
对于一个为了完成产品的人员而言,系统的稳定性、可靠性是第1位的,如果为了追求技术上面的东西去牺牲这些东西,个人认为不可取。
正所谓,重剑无锋,大巧不工!

4

主题

25

帖子

41

积分

注册会员

Rank: 2

积分
41
发表于 2005-5-10 20:38:00 | 显示全部楼层

Re:静态分配内存和new动态分配在游戏中有什么区别????

呵呵,楼上的楼上,把定义写在头文件里,可能会出问题的,如果有两个cpp引用了该头文件,就会出现重定义错误。应该在具体实现相关的cpp里定义,然后在头文件里用
extern CHouse house[10000];
来声明,这样引用这个头文件的文件都可以用这个数组了。
另外,我的习惯是栈里面只放些临时变量,像i,j,k,a,b,c,x,y;之类的,和指针。对象有的作为全局变量,有的用new,主要根据数目……如果数目是固定的,我就做全局了,否则在初始化时new,大概玩家都能忍受进入游戏时短暂的wait的吧*_*

19

主题

102

帖子

102

积分

注册会员

Rank: 2

积分
102
发表于 2005-5-11 08:09:00 | 显示全部楼层

Re:静态分配内存和new动态分配在游戏中有什么区别????

需要链表

2

主题

85

帖子

85

积分

注册会员

Rank: 2

积分
85
发表于 2005-5-11 11:52:00 | 显示全部楼层

Re:静态分配内存和new动态分配在游戏中有什么区别????

超级地球村XP:

静态存储区的大小是没有明确限制的,你那样定义没有什么问题,通常几兆到几十兆都是可以的。这个你可以自己试验(楼上的楼上说的也正确,要注意避免重复定义,不过这是语法问题,和内存没有关系。)

4

主题

25

帖子

41

积分

注册会员

Rank: 2

积分
41
发表于 2005-5-11 14:37:00 | 显示全部楼层

Re:静态分配内存和new动态分配在游戏中有什么区别????

追求速度的情况下,链表也可以用静态数组储存

19

主题

102

帖子

102

积分

注册会员

Rank: 2

积分
102
发表于 2005-5-11 20:30:00 | 显示全部楼层

Re:静态分配内存和new动态分配在游戏中有什么区别????

......如果是开发网络游戏的话需要......
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-25 15:17

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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