问题出在主题名称中.如何使用已知地址分配内存?在c ++中我们可以使用的是放置形式operator new(std::size_t, void* p)
.如何以纯粹的方式完成c
?
C++的placement-new运算符在给定地址(而不是内存本身)内分配对象,并调用其构造函数.
如何使用已知地址分配内存?
那不是内存分配.您已经分配了内存(并且您知道有效位置的地址),或者根本没有(因此您没有地址,或者地址无效).
假设您已经拥有预先分配的内存块的地址,则您已被允许使用它:
struct MyStruct { int x; };
void* my_address = ...; // known and already allocated chunk of memory, e.g.
// - from stack: char mem[sizeof(MyStruct)]; -> mem
// - from heap: malloc(sizeof(MyStruct));
// - any location that can be considered `valid'
struct MyStruct* my_struct = my_address;
my_struct->x = 1;
Run Code Online (Sandbox Code Playgroud)