作者pougoar ()
看板C_and_CPP
标题[问题] struct的data大小是可变的...
时间Wed Feb 25 22:35:38 2009
假设我有个
struct msg
{
int length;
char data[n];
};
我想让data的大小是可变的
然後透过网路送出去
这样不知道要怎麽做比较好阿?
我只知道可以用 dynamic allocate
struct msg
{
int length;
char *data;
};
msg->data= (char*)allocate(sizeof(char)*n);
1. 我很好奇 这样动态的宣告data的大小会不会有问题阿?
2. 还有一个问题是此时的data放的是动态allocate到资料的位址
这样我把msg传出去
远端的电脑收到这个data的指标也没用阿
它也指不到这个动态的区域
所以我想请问到底怎麽宣告这个大小不一定的structure
且送出去的时候 远端也可以顺利的读到这个structure
谢谢指教...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.160.123.202
1F:推 tsaiminghan:1. 那是指标, 所以没问题 02/25 22:38
2F:推 sunneo:订定一个资料结构里面放着各个资料量的大小 02/25 22:39
3F:→ tsaiminghan:2. 传送的机制我不清楚, 但是接收的是指标的话 02/25 22:39
4F:→ sunneo:把该资料结构当作header,接收的人用该资讯产生各大小的区块 02/25 22:39
5F:→ sunneo:接下来就是依序的把资料传过去 02/25 22:40
6F:→ tsaiminghan:不要理我, 看S大的推文就好 02/25 22:41
7F:→ pougoar:谢谢S大的回应 不过我还是希望不管资料大小 传送一次做完 02/25 22:47
8F:→ pougoar:不然我直接 宣个一个固定n的data 比n大的传 分段传 02/25 22:49
9F:→ pougoar:还是希望传送的msg structure可以依使用者喜好变大变小 02/25 22:56
10F:→ pougoar:且一次就传出去 谢谢 02/25 22:56
11F:推 ledia:cast 成 char * 传过去, 另一边再 cast 回你的 type 02/25 22:58
12F:→ ledia:长度问题, 你收资料会知道它多大, 要不然存个长度在 header 02/25 22:58
13F:→ ledia:或者是 zero end (如果你的 data 是 ascii) 02/25 22:58