复制指针

时间:2016-06-24 12:58:27

标签: c++ c++11 pointers

我正在通过网络从客户端发送一些数据<>服务器。我正在读一个没有任何问题的数据包,但由于某种原因我无法复制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);
}

如何将packet指针复制到independentPacket变量,以便将其存储起来供以后使用?是否可以在不分配new内存的情况下制作副本,以后我需要delete

1 个答案:

答案 0 :(得分:8)

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

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

auto independentPacket = *packet;

现在independentPacketpacket automatic storage duration的本地副本。