| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2444 人关注过本帖
标题:[讨论]关于malloc的用法
取消只看楼主 加入收藏
cobby
Rank: 1
等 级:新手上路
威 望:1
帖 子:565
专家分:0
注 册:2007-7-11
收藏
 问题点数:0 回复次数:2 
[讨论]关于malloc的用法
已有如下结点定义

#define NULL 0 /*宏定义*/
typedef struct node /*定义结点类型的数据结构*/
{
char c; /*数据域,类型为字符型*/
struct node *next; /*指针域,类型为本结构体类型*/
}*L; /*类型重定义,即Node和*L和struct node等价*/


main()
{
L l,p,q; /*用指针类型定义三个结点类型的指针*/
char ch;
int n;
l=(L)malloc(sizeof(struct node)); //已知此句与l=(L)malloc(sizeof(L))不等价
…………
}

然而使用l=(L)malloc(sizeof(L)),程序运行正常,但显然sizeof(L)和sizeof(struct node)大小不一,请问用l=(L)malloc(sizeof(L))这句为什么程序运行也正常?是不是用L定义的指针只需要sizeof(L)即可?如果是这样,那么我用l=(L)malloc(sizeof(struct node))这句,多出来的空间到哪去了?

本人确实还不太明白,请指教!
搜索更多相关主题的帖子: malloc 用法 node 定义 类型 
2007-10-28 08:44
cobby
Rank: 1
等 级:新手上路
威 望:1
帖 子:565
专家分:0
注 册:2007-7-11
收藏
得分:0 
你说的内存对齐我明白,我不明白的是,就如你定义的结点,即然结点需要的空间是8(或者12),怎么我的程序中用L(实验证明大小是4)也可以运行正常?用指针的话不是应该空间不足了吗?

[此贴子已经被作者于2007-10-28 10:56:31编辑过]


努力成为菜鸟!
2007-10-28 10:54
cobby
Rank: 1
等 级:新手上路
威 望:1
帖 子:565
专家分:0
注 册:2007-7-11
收藏
得分:0 
明白了,原来如此,难怪一直没发现。谢谢了!

努力成为菜鸟!
2007-10-28 12:03
快速回复:[讨论]关于malloc的用法
数据加载中...
 
   



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

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