免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4487 | 回复: 12
打印 上一主题 下一主题

[C++] 请假下:关于大块内存的分配 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-03-08 16:26 |只看该作者 |倒序浏览
在游戏编程中,经常要tcp发送消息,要用到临时buf构建消息内容,现在有2种方式实现:
1、在当前的函数栈中直接开一个大块内存buf,如char buf[64*1024],函数栈返回就释放。
2、用一个全局(或者静态)的buf,反复使用这个空间,包括其他的消息转发也使用这个buf构建消息。

请问大牛们  哪种方式比较好

我个人比较偏向1,临时buf

论坛徽章:
0
2 [报告]
发表于 2014-03-08 16:33 |只看该作者
不能沉啊  求大神指教。。

论坛徽章:
11
巨蟹座
日期:2013-12-23 11:12:14双子座
日期:2014-08-28 09:14:55子鼠
日期:2014-07-25 16:21:22摩羯座
日期:2014-07-23 15:17:47摩羯座
日期:2014-05-30 13:09:05午马
日期:2014-04-30 18:10:00天秤座
日期:2014-04-25 12:12:00申猴
日期:2014-04-22 11:30:15午马
日期:2014-03-07 16:06:40辰龙
日期:2013-12-25 18:36:00摩羯座
日期:2014-09-02 17:00:55
3 [报告]
发表于 2014-03-08 16:38 |只看该作者
支持1

论坛徽章:
0
4 [报告]
发表于 2014-03-08 16:42 |只看该作者
我上一个游戏原来的做法就是临时buf   只有很少量的十分热门的路径里的buf才用static  

不过我到新公司来后  发现不少地方他们都用static的buf   其实我个人觉得如此真没必要  

要是以后很多地方都这么用  直接占用的内存量累计起来可能就不小了(虽然现在的游戏服务器都是64位几十g的内存)

论坛徽章:
59
2015年亚洲杯之约旦
日期:2015-01-27 21:27:392015年亚洲杯之日本
日期:2015-02-06 22:09:41拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015元宵节徽章
日期:2015-03-06 15:50:392015年亚洲杯之阿联酋
日期:2015-03-19 17:39:302015年亚洲杯之中国
日期:2015-03-23 18:52:23巳蛇
日期:2014-12-14 22:44:03双子座
日期:2014-12-10 21:39:16处女座
日期:2014-12-02 08:03:17天蝎座
日期:2014-07-21 19:08:47
5 [报告]
发表于 2014-03-08 16:46 |只看该作者
char buf[64*1024]大小的话,
一般stack就好了。
最高效又没有副使用。

论坛徽章:
11
巨蟹座
日期:2013-12-23 11:12:14双子座
日期:2014-08-28 09:14:55子鼠
日期:2014-07-25 16:21:22摩羯座
日期:2014-07-23 15:17:47摩羯座
日期:2014-05-30 13:09:05午马
日期:2014-04-30 18:10:00天秤座
日期:2014-04-25 12:12:00申猴
日期:2014-04-22 11:30:15午马
日期:2014-03-07 16:06:40辰龙
日期:2013-12-25 18:36:00摩羯座
日期:2014-09-02 17:00:55
6 [报告]
发表于 2014-03-08 16:48 |只看该作者
本帖最后由 Susake_ 于 2014-03-09 14:36 编辑

更改下oops:

论坛徽章:
11
技术图书徽章
日期:2014-03-01 14:44:34天蝎座
日期:2014-05-21 22:11:59金牛座
日期:2014-05-30 17:06:14
7 [报告]
发表于 2014-03-08 18:12 |只看该作者
如果你对整个程序栈内存使用相当清楚,能够确保栈不溢出,栈中64K就行。

论坛徽章:
6
技术图书徽章
日期:2013-11-13 11:11:27子鼠
日期:2014-02-20 17:54:13处女座
日期:2014-06-16 17:43:33午马
日期:2014-08-08 09:11:17未羊
日期:2014-08-10 11:57:072015年辞旧岁徽章
日期:2015-03-03 16:54:15
8 [报告]
发表于 2014-03-09 10:48 |只看该作者
本帖最后由 littledick 于 2014-03-09 10:51 编辑

根据项目需求来决定。
你单个进程要负载多少个客户端,消息实时性要求有多高,广播消息包类型数量大小。

论坛徽章:
0
9 [报告]
发表于 2014-03-09 12:47 |只看该作者
回复 6# Susake_

释放一个自动对象的性能差别你能profile出来?

论坛徽章:
0
10 [报告]
发表于 2014-03-09 12:48 |只看该作者
除非是大到放不下了,或者是要依赖实现的静态初始化的一些特性(比如线程安全),否则不用考虑。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP