gpt4 book ai didi

c++ - 魔术放置新?

转载 作者:太空狗 更新时间:2023-10-29 19:37:45 26 4
gpt4 key购买 nike

我正在“手动”玩动态内存分配,我想看看 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 时,你实际上是在告诉编译器“我知道这 block 内存很好,跳过分配,并为我的对象使用这个指针。”然后使用 operator new 提供的指针调用对象的构造函数,无论它是刚刚分配的内存还是使用 placement new 指定的内存。 operator new 本身与对象的构造方式没有任何关系。

关于c++ - 魔术放置新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1731838/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com