标题:关于struct 以及GDB
只看楼主
seven_qi
Rank: 1
等 级:新手上路
帖 子:4
专家分:2
注 册:2010-4-3
结帖率:0
已结贴  问题点数:20 回复次数:5 
关于struct 以及GDB
程序代码:
struct   MyBitType
{
          char a:3;
          unsigned   int   b:3;
          unsigned   int   c:3;
          int   d;
};  
这段代码 sizeof(MyBitType) 是8 为什么,内存对其的话怎么会是8呢?  char a:3 这个3 是什么意思? 

另外,如果我想用gdb 来查看struct 里面元素的内存分布情况? 有什么样的指令?
谢谢
搜索更多相关主题的帖子: struct GDB 
2010-04-03 12:31
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
得分:10 
gdb 的 x  指令跟p (print)指令。

你可以man下gdb

set print array on
set print vtbl on
set print object on
set print address on
set print pretty on
set print union on

可以把你的gdb 定制下。把一些feature打开。
2010-04-03 12:39
seven_qi
Rank: 1
等 级:新手上路
帖 子:4
专家分:2
注 册:2010-4-3
得分:0 
回复 2楼 Devil_W
谢谢你/
这些都开了。
然后不知道怎么调试。
2010-04-03 12:42
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
得分:0 
google
2010-04-03 12:50
seven_qi
Rank: 1
等 级:新手上路
帖 子:4
专家分:2
注 册:2010-4-3
得分:0 
(gdb) print &s1
$2 = (struct MyBitType *) 0x7fffffffe1a0
(gdb) print &s1.d
$3 = (int *) 0x7fffffffe1a4
(gdb) print &s1.a
$4 = 0x7fffffffe1a0 "\220\342\377\377\377\177"
(gdb) print &s1.b
$5 = (unsigned int *) 0x7fffffffe1a0
(gdb) print &s1.c
$6 = (unsigned int *) 0x7fffffffe1a0
(gdb) print &s1.d
$7 = (int *) 0x7fffffffe1a4

为何a,b,c的初始地址是一样的?
2010-04-03 13:09
Kid_X
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:216
专家分:515
注 册:2007-10-8
得分:10 
LZ所说的:3是位域,你可以网上搜一下,这东西一般用不到。3表示用3bit来表示这个变量。
2010-04-04 00:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-301521-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.249672 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved