IOCP中分配内存改用new还是GloabAlloc?

samuelo 2009-12-03 10:44:48
有人说用GloabAlloc,不用new。
但new内部不是调用GloabAlloc吗?new还调构造函数,比GloabAlloc还好一点。
我不解为什么不建议用new?
...全文
130 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
samuelo 2009-12-04
  • 打赏
  • 举报
回复
和8楼想法一样。
尘雨 2009-12-03
  • 打赏
  • 举报
回复
GlobalAlloc是为了兼容以前16位应用程序,现在已经不区分globa和local,而且global内存管理API族,相对慢一些。通常用于DDE,OLE,剪贴板之类的应用程序之间交互数据。IOCP用估计是最初沿用的习惯。没有一定要求用这个

最好使用HeapAlloc来替代,Heap族性能高于Global族。new也可以,不过new干的事情多,内存管理细节的可控性,不如Global族和Heap族
lizhigang34 2009-12-03
  • 打赏
  • 举报
回复
new,delete是C++运算符,不是函数。
有时我new出来的对象,希望调用析构函数,所以喜欢用new和delete。
尘雨 2009-12-03
  • 打赏
  • 举报
回复
前者可跨进程,new不可以
blackboycpp 2009-12-03
  • 打赏
  • 举报
回复
新人纯学习
rularys 2009-12-03
  • 打赏
  • 举报
回复
new 与 GloabAlloc 没有冲突——可以用后者来实现前者。但是,如果用默认的new,会与其它同样用默认的new的代码产生关联,这样假如全局只用new的话,它对内存的分配策略可能根本无法满足要求(很容易出现内存碎片等等),所以服务器一般都会自己管理内存的分配。内存池就是个例子,当然你也可以让new从内存池中取得内存,所以说new与GloabAlloc 没有冲突。
  • 打赏
  • 举报
回复
可以用 HEAPALLOC()
WinEggDrop 2009-12-03
  • 打赏
  • 举报
回复
一直还是用malloc().^_^
makui 2009-12-03
  • 打赏
  • 举报
回复
[Quote=引用楼主 samuelo 的回复:]
有人说用GloabAlloc,不用new。
但new内部不是调用GloabAlloc吗?new还调构造函数,比GloabAlloc还好一点。
我不解为什么不建议用new?
[/Quote]

建议从复用的角度来考虑这个问题,建立自己的内存池,更有效一些

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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