C++ 如何使用C++;?
我需要在网络中传输一个缓冲区,它包含以下内容:C++ 如何使用C++;?,c++,buffer,C++,Buffer,我需要在网络中传输一个缓冲区,它包含以下内容: 保留总缓冲区大小的2个字节 保留标头大小的2个字节 标题 实际用户消息 我是这样定义缓冲区的: class Buffer { public: Buffer(size_t Capacity); private: uint8_t totalSize[2]; uint8_t headerSize[2]; uint16_t header[???]; // incorrect uint8_t user
- 保留总缓冲区大小的2个字节
- 保留标头大小的2个字节
- 标题
- 实际用户消息
class Buffer
{
public:
Buffer(size_t Capacity);
private:
uint8_t totalSize[2];
uint8_t headerSize[2];
uint16_t header[???]; // incorrect
uint8_t user[Capacity];
};
我想做的是发送一个Buffer
的实例,类似于send(reinterpret\u cast(&Buffer))
我知道我可以使用new
为头和用户分配内存,但我也试图使缓冲区成为内存中的连续块
我该怎么做呢?至于动态内存分配,您不能拥有动态分配的数组。C++应该使用容器或智能指针来正确处理内存分配和分配。以下是容器示例:
class Buffer{
public:
//getters and setters
...
private:
uint8_t totalSize[2];
uint8_t headerSize[2];
std::vector<uint16_t> header;
}
类缓冲区{
公众:
//接球手和接球手
...
私人:
uint8_t总尺寸[2];
uint8_t headerSize[2];
std::向量头;
}
您不需要处理容量,也就是说,将其存储在外部,vector
将为您处理容量
那你说的是序列化。它在C++中不是那么简单,你不能只在类实例所在的内存中使用一个指针,在很多地方出错,比如填充。你们可以看看图书馆,也可以自己写