已有结构:
struct Frame
{
int type;
int length;
char* data;
};我构造包的方法如下:
char* CompriseFrame(int type, int len, char* data)
{
Frame oneFrame = new Frame;
oneFrame.type = type;
oneFrame.length = len; oneFrame.data = new char[sizeof(data)];
memcpy(oneFrame.data, data, sizeof(data)); return reinterpret_cata<char*>(oneFrame);
}
然后再把获得包发出去,请问这样有问题吗?谢谢指点!
struct Frame
{
int type;
int length;
char* data;
};我构造包的方法如下:
char* CompriseFrame(int type, int len, char* data)
{
Frame oneFrame = new Frame;
oneFrame.type = type;
oneFrame.length = len; oneFrame.data = new char[sizeof(data)];
memcpy(oneFrame.data, data, sizeof(data)); return reinterpret_cata<char*>(oneFrame);
}
然后再把获得包发出去,请问这样有问题吗?谢谢指点!
解决方案 »
- VC 2005 消息释放问题
- 如何快速的改变控件的字体属性?---快来抢分,答完马上揭贴!
- 得到FTP服务器上的文件的创建时间,修改时间
- 请教两个小问题
- 应该用怎么样的代码实现以下问题??(请高手急救)
- 怎样才能将第三方的dll文件静态编译到自己的EXE文件里呢?
- 炎炎夏日 高手们进来喝杯茶 顺便问一个超菜的问题 并顺便送点分!!!!
- 谁有 acrobat5.0 SDK啊?
- 求助!!!急!!!在ActiveX控件中引入窗体技术,响应对话框上的按钮
- 看过《essential c++(中文版)》(华中科技大学出版社)的朋友请帮忙?(之三)
- 屏幕监控的方案?谢谢了!
- 隧道模式如何实现,奖励1000元
结构体的第三个值是一个指针,不是真正的数据。LZ需要把真正的数据data放在这些数据后面;
或者将char* data; 修改为char data[10000];,要保证能包括数据的最大值才可以。
char* CompriseFrame(int type, int len, char* data)
{
int totalLen = sizeof(type) + sizeof(len) + sizeof(data);
char* result = new char[totalLen + 1];
memcpy(result, htonl(type), sizeof(type));
memcpy(result + sizeof(type), htonl(len), sizeof(len));
memcpy(result + sizeof(type) + sizeof(len), data, sizeof(data));
return result;
}
char *p="hello";
siezof(p) == 4
sizeof(data) ---》strlen(data)+1
否则没有拷贝全数据。
->
Frame * oneFrame = new Frame;
->
oneFrame->问题好多啊