我正在通过网络从客户端发送一些数据<>服务器。我正在读一个没有任何问题的数据包,但由于某种原因我无法复制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
?
答案 0 :(得分:8)
只需删除不必要的指针业务,制作本地副本并处理:
const SimpleTestPacket* packet =
reinterpret_cast<const SimpleTestPacket*> (data);
auto independentPacket = *packet;
现在independentPacket
是packet
automatic storage duration的本地副本。