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以后我必须这样做?
只需删除不必要的指针业务,制作本地副本并处理:
const SimpleTestPacket* packet =
reinterpret_cast<const SimpleTestPacket*> (data);
auto independentPacket = *packet;
Run Code Online (Sandbox Code Playgroud)
现在independentPacket是packet具有自动存储持续时间的本地副本.