免费注册 查看新帖 |

Chinaunix

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

帮忙看看这个NEW什么意思 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-24 09:07 |只看该作者 |倒序浏览
ACE_Allocator *
ACE_Allocator::instance (void)
{
  //  ACE_TRACE ("ACE_Allocator::instance");

  if (ACE_Allocator::allocator_ == 0)
  {
      // Perform Double-Checked Locking Optimization.
          static void *allocator_instance = 0;

          // Check this critical assumption.  We put it in a variable
          // first to avoid stupid compiler warnings that the
          // condition may always be true/false.
#if !defined (ACE_NDEBUG)
          int assertion = (sizeof allocator_instance ==
                           sizeof (ACE_New_Allocator));
          ACE_ASSERT (assertion);
#endif /* !ACE_NDEBUG */

         ACE_Allocator::allocator_ = new (&allocator_instance) ACE_New_Allocator;
  }

  return ACE_Allocator::allocator_;
}

ACE_Allocator::allocator_ = new (&allocator_instance) ACE_New_Allocator; 中(&allocator_instance) 什么意思

论坛徽章:
0
2 [报告]
发表于 2009-07-24 09:19 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
3 [报告]
发表于 2009-07-24 09:23 |只看该作者
placement new

论坛徽章:
0
4 [报告]
发表于 2009-07-24 09:23 |只看该作者

回复 #2 xiaoQ008 的帖子

ACE_Allocator::allocator_ = new (&allocator_instance) ACE_New_Allocator
什么意思  就讲讲这一句 还行

论坛徽章:
0
5 [报告]
发表于 2009-07-24 09:36 |只看该作者
ACE_Allocator::allocator_ = new (&allocator_instance) ACE_New_Allocator

这个new 是placement new的用法。

它的意思是说:创建一个ACE_New_Allocator对象,并把这个对象放在allocator_instance所在那块内存中,即不再堆里任务分配空间。

论坛徽章:
0
6 [报告]
发表于 2009-07-24 15:48 |只看该作者
在事先分配好的一块内存中,创建一个对象~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP