c++关键字new的奇怪用法
A strange use of c++ keyword of new
我遇到了如下代码:
char *buffer = new char[sizeof(PoolThread) * numThreads];
m_threads = reinterpret_cast<PoolThread*>(buffer);
for (int i = 0; i < numThreads; i++)
{
new (buffer)PoolThread(*this);
buffer += sizeof(PoolThread);
}
我猜这里的new
是用于将m_threads
指向的空内存空间初始化为一个真实的对象(PoolThread
类)
我已经谷歌了,但只发现new
的使用信息如下:
pointer = new somthing[number];
我希望在上面的代码示例中有更多关于new
用法的信息。这种用法来自c++标准吗?
这是一个新的位置,当你想要覆盖操作系统的正常内存管理器并选择你想要放置你正在分配的对象的确切位置时使用。
在你发布的代码中,buffer
地址用于指定元素将被分配的位置(实际上它被修改,以便每个连续的分配都遵循地址)。
当然,因为它把内存管理器从内存分配的责任中解放出来,所以为你存储的东西提供有效的地址是你自己的责任。这就是为什么它只在真正需要的时候使用。
相关文章:
- Visual Studio 2015:Extern "C" 和 "export" 关键字
- C++中的"inline"关键字
- 如何确保C++函数在定义之前声明(如override关键字)
- 这个指针在c++中的用法
- 谷歌模拟和覆盖关键字
- 当C++中需要自动删除时,这是静态的正确用法吗?
- 结构体 S { int align; } 之间的区别;(struct 关键字后的名称)和 struct { int al
- 如果全局变量默认是外部变量,为什么要添加"extern"关键字?
- libstdc++ 文件系统中未初始化的用法?
- lambda 中的跨平台"auto"关键字用法:integral_constant作为函数参数
- "extern"关键字用法
- 常量关键字用法C++
- 抛出关键字的用法
- 在 VC++ 中访问一个文件中声明的变量.(外部关键字用法)
- c++使用Boost库示例中的声明关键字用法
- extern关键字在C++中的用法
- c++关键字new的奇怪用法
- extern关键字和多个翻译单元的用法
- 从语法的角度来看,"volatile"关键字在C++函数中有多少用法?
- 外部关键字用法