加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 魔术在新的位置?

发布时间:2020-12-16 10:42:08 所属栏目:百科 来源:网络整理
导读:我正在“手动”使用动态内存分配,我想看看来自MS的人是如何实现placement new的,但是在调试时我“步入”它让我转到代码: inline void *__CRTDECL operator new(size_t,void *_Where) _THROW0(){ // construct array with placement at _Wherereturn (_Where
我正在“手动”使用动态内存分配,我想看看来自MS的人是如何实现placement new的,但是在调试时我“步入”它让我转到代码:

inline void *__CRTDECL operator new(size_t,void *_Where) _THROW0()
{   // construct array with placement at _Where
return (_Where);
}

任何人都可以向我解释这个代码究竟是如何将我的对象放在我的指针所指向的位置,当我在这段代码中看到的所有内容都与return语句一致时,我提供了作为参数.我不认为在评论中说我希望这个fnc做什么实际上足以让它起作用.
谢谢你的建设性答案.

解决方法

operator new的目的只是为对象分配内存,并将指针返回到该内存.当你使用placement new时,你实际上告诉编译器“我知道这个内存是好的,跳过分配,并使用这个指针作为我的对象.”然后使用operator new提供的指针调用对象的构造函数,无论它是刚刚分配的内存,还是使用placement new指定的内存. operator new本身与您的对象的构造方式无关.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读