免费注册 查看新帖 |

Chinaunix

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

等待解决,结构体内存分配问题? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-03-08 18:16 |只看该作者 |正序浏览
struct TT
{
        int a;
};

int main(int argc, char *argv[])
{
        int i;
        int size;

        struct TT *pStru;

        for (i = 0; i < 100; i++)
        {
                size = sizeof(sizeof(struct TT));
                pStru = (struct TT*)malloc(size);

                printf("==结构体大小:%d, \ta[%d]的地址为:%d===\n", size, i, pStru);

                printf("");
        }
        return 0;
}

运行结果如下图:




想请问一下:结构体指针之间的差值每次都是56,这个值是怎么得来的,不解?
谢谢回答!

论坛徽章:
0
12 [报告]
发表于 2010-03-08 22:23 |只看该作者
应该是内存管理的问题吧!

论坛徽章:
0
11 [报告]
发表于 2010-03-08 21:32 |只看该作者
呵呵,谢谢各位了

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
10 [报告]
发表于 2010-03-08 19:53 |只看该作者
这个跟平台相关的。

如你申请4字节,操作系统给你实际分配的往往不止4字节,Linux下可能是16、32字节等。
Windows下Debug、Release模式可能还有差别(Debug > Release?),我现在没有环境可以试验。

具体深究这个数字是56还是其他没有多少实际意义,反正申请多大,就只用多大的内存。

论坛徽章:
0
9 [报告]
发表于 2010-03-08 19:03 |只看该作者
我只想知道56个字节是怎么来的?是规定的就这么大,还是计算所得,总得有个理由吧,我不要模糊的说明,谢谢

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
8 [报告]
发表于 2010-03-08 18:59 |只看该作者
你只申请4字节,但一般实际分配的最小值都比4大

论坛徽章:
0
7 [报告]
发表于 2010-03-08 18:41 |只看该作者

论坛徽章:
0
6 [报告]
发表于 2010-03-08 18:40 |只看该作者
跟进malloc

论坛徽章:
0
5 [报告]
发表于 2010-03-08 18:35 |只看该作者
这只是一个测试程序,想验证一个问题,不过还是谢谢你的提示。
呵呵,写错了,应该是size = sizeof(struct TT);

论坛徽章:
0
4 [报告]
发表于 2010-03-08 18:30 |只看该作者
代码中两点问题,size = sizeof(sizeof(struct TT));
还有最后没有free.
呵呵,不好的习惯啊.
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP