这里有一段C++代码,看起来有些奇怪,但我知道它是有效的。
定义了一个结构体,在程序中使用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;
}
代码还有更多内容,但这就是要点。
我没有测试过这段代码,但我看到的代码经过了很好的测试并且可以正常工作。但是为什么呢?
谢谢。
编辑:修复了内存泄漏问题。