复制指针

Luc*_*cas 1 c++ pointers c++11

我通过网络从客户端<>服务器发送一些数据.我正在读一个没有任何问题的数据包,但SimpleTestPacket由于某些原因我无法复制指针.我已经尝试使用memset我得到分段错误的地方.

码:

typedef struct simpleTestPacket_t {
    uint32_t type;
    uint8_t point;
    int32_t value;
} SimpleTestPacket;

void onReceivePacket(uint8_t header, const char* data, size_t count) {
    const SimpleTestPacket* packet = reinterpret_cast<const SimpleTestPacket*> (data);

    SimpleTestPacket* independentPacket = nullptr;
    memset(independentPacket, packet, sizeof(SimpleTestPacket) * count);
}
Run Code Online (Sandbox Code Playgroud)

如何将packet指针复制到independentPacket变量,以便我可以存储它以供以后使用?是否可以在不分配new内存的情况下制作副本,delete以后我必须这样做?

Bau*_*gen 8

只需删除不必要的指针业务,制作本地副本并处理:

const SimpleTestPacket* packet = 
         reinterpret_cast<const SimpleTestPacket*> (data);

auto independentPacket = *packet;
Run Code Online (Sandbox Code Playgroud)

现在independentPacketpacket具有自动存储持续时间的本地副本.