免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 2824 | 回复: 22
打印 上一主题 下一主题

请教各位一个复杂的结构体指针问题. [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-08-29 14:59 |只看该作者 |倒序浏览
typedef structr unit
{
    int len;
    char bb[100];

}unit1

void main()
{
unit1 *mem1;
unit1 *mem2;   
char *k=(char *)malloc(120);
mem1->;len=104;
mem1->;bb=k;

mem2->;len=16;
mem2->;bb=k+104;
}

请问这样有问题,记得以前在结构体实现变长缓冲区,都是用
char bb[1],
现在对于mem2,mem2指向一片地址,请问mem2里具体成员的
地址分配?象bb[100],本来想让bb指向16个字节的缓冲区.
而定义的是100,会有什么莫名的问题吗?



}

论坛徽章:
0
2 [报告]
发表于 2005-08-29 15:05 |只看该作者

请教各位一个复杂的结构体指针问题.

mem1,mem2都没赋值!

论坛徽章:
0
3 [报告]
发表于 2005-08-29 15:10 |只看该作者

请教各位一个复杂的结构体指针问题.

sorry,写错了,应该是如下所示

typedef structr unit
{
   int len;
   char bb[100];

}unit1

void main()
{
unit1 *mem1;
unit1 *mem2;     
char *k=(char *)malloc(120);
mem1=(unit1 *)k;
k+=k+104;

mem2=(unit1 *)k ;

}


请问这样有问题,记得以前在结构体实现变长缓冲区,都是用
char bb[1],
现在对于mem2,mem2指向一片地址,请问mem2里具体成员的
地址分配?象bb[100],本来想让bb指向16个字节的缓冲区.
而定义的是100,会有什么莫名的问题吗?

论坛徽章:
0
4 [报告]
发表于 2005-08-29 15:17 |只看该作者

请教各位一个复杂的结构体指针问题.

还是这样写吧

  1. mem1=(unit1 *)malloc( sizeof( unit1 ) );
  2. mem2=(unit1 *)malloc( sizeof( unit1 ) );
复制代码

别人容易明白

论坛徽章:
0
5 [报告]
发表于 2005-08-29 15:28 |只看该作者

请教各位一个复杂的结构体指针问题.

这样写就肯定没有问题了,呵呵.
程序里问题是经过我简化成上述模型的.

论坛徽章:
0
6 [报告]
发表于 2005-08-29 15:36 |只看该作者

请教各位一个复杂的结构体指针问题.

想用不定长结构体应该类似这样吧:

struct unit {
       ... ...
       char b[1];
};

      struct unit *pu = (struct unit *) malloc(sizeof(struct unit)  + 100);

      ... ...

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
7 [报告]
发表于 2005-08-29 15:42 |只看该作者

请教各位一个复杂的结构体指针问题.

楼主这是什么代码? 伪代码?

论坛徽章:
0
8 [报告]
发表于 2005-08-29 15:42 |只看该作者

请教各位一个复杂的结构体指针问题.

是的,一般是这么用,但是现在在调别人的一段程序.
动不动到内存有关的地方处一些莫明的错误.
故此一问.

论坛徽章:
0
9 [报告]
发表于 2005-08-29 15:56 |只看该作者

请教各位一个复杂的结构体指针问题.

问题:bb已经是自己的bb,不能是其他的bb

论坛徽章:
0
10 [报告]
发表于 2005-08-29 15:59 |只看该作者

请教各位一个复杂的结构体指针问题.

不是把,对于mem1中的bb指向应该是k+4吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP