我可以用类类型投射一个内存区域吗


class RW {
int a;
public:
int read() const {
return this->a;
}
void write(int _a) {
this->a = _a;
}
};
#define PHYSICAL_ADDRESS (0x60000000)
#define SIZEOF_PHY_ADDR  (sizeof(RW))
// assume physical memory area is already assigned for the sizeof(RW)
void main()
{
int val;
void *phy_ptr = PHYSICAL_ADDRESS;
RW *rw_ptr = (RW *)phy_ptr;
rw_ptr->write(1);
val = rw_ptr->read();
}

请假设上面的代码是伪代码。我有一个可读写的共享物理内存区域。我想把那个区域的指针投射到读写。我可以这样做吗?可以接受吗?

我已经检查过它是否正常工作,但我不确定它是否是正确的cpp方式。

我感谢任何回应和讨论!提前感谢!

您不需要强制转换:您只需使用placement-new操作符在该地址创建对象即可。

void main()
{
int val;
void *phy_ptr = PHYSICAL_ADDRESS;
//RW *rw_ptr = (RW *)phy_ptr;
RW *rw_ptr = new(phy_ptr) RW;
rw_ptr->write(1);
val = rw_ptr->read();
rw_ptr->~RW();
}

最新更新