如何在纯C而不是C++中使用已知地址分配一块内存

use*_*882 -1 c memory

问题出在主题名称中.如何使用已知地址分配内存?在c ++中我们可以使用的是放置形式operator new(std::size_t, void* p).如何以纯粹的方式完成c

Pio*_*cki 7

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)