下面是一些我觉得很有趣的 C++ 代码,但我知道它可以工作。
定义了一个struct,在程序中我们使用void指针分配内存。然后使用分配的缓冲区创建结构。
这是一些代码
typedef struct{
char buffer[1024];
} MyStruct
int main()
{
MyStruct* mystruct_ptr = 0;
void* ptr = malloc(sizeof(MyStruct));
// This is the line that I don't understand
mystruct_ptr = new (ptr) MyStruct();
free(ptr);
return 0;
}
该代码包含更多内容,但这就是它的要点。
我还没有测试过这段代码,但我正在查看的代码经过了很好的测试,并且可以正常工作。但是如何呢?
谢谢。
编辑:修复了内存泄漏。
最佳答案
这叫做 placement new , 它在预分配的缓冲区上构造一个对象(您指定地址)。
编辑:更有用的链接
关于c++ - 从 void 指针缓冲区进行结构实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1930146/