免费注册 查看新帖 |

Chinaunix

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

一个MALLOC问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-11-05 21:29 |只看该作者 |倒序浏览
我想做一个HASH表

比如:

一个指针数组 point[100],默认都指向null

和一个结构
struct aaa {
   int a;
   int b;
   int c;
}

当加入数据的时候

为struct分配一个空间,并且用point[n]指向这个结构

搜索的时候,如果该指针为null,那么这里还没数据。
如果不等于null,则 进行后续操作。
也就是说,为了节约空间,我先只申请100个指针,而不申请STRUCT空间,随用随申请,随丢随释放它。


请问point该如何分配空间?

struct aaa * point;
point = (struct aaa *) malloc(sizeof(struct aaa)*100);

上面这样做是不是把100个结构体都申请好了?

还是这样做

struct aaa * point;
point = (struct aaa *) malloc(sizeof(struct aaa *)*100);

这样是分配100个结构体指针么?

各位请帮忙看看。

论坛徽章:
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
2 [报告]
发表于 2010-11-05 21:48 |只看该作者
随用随申请,那么每次只能申请1个,而不是100个。

后面两个都回答是

论坛徽章:
223
2022北京冬奥会纪念版徽章
日期:2015-08-10 16:30:32操作系统版块每日发帖之星
日期:2016-05-10 19:22:58操作系统版块每日发帖之星
日期:2016-02-18 06:20:00操作系统版块每日发帖之星
日期:2016-03-01 06:20:00操作系统版块每日发帖之星
日期:2016-03-02 06:20:0015-16赛季CBA联赛之上海
日期:2019-09-20 12:29:3219周年集字徽章-周
日期:2019-10-01 20:47:4815-16赛季CBA联赛之八一
日期:2020-10-23 18:30:5320周年集字徽章-20	
日期:2020-10-28 14:14:2615-16赛季CBA联赛之广夏
日期:2023-02-25 16:26:26CU十四周年纪念徽章
日期:2023-04-13 12:23:10操作系统版块每日发帖之星
日期:2016-05-10 19:22:58
3 [报告]
发表于 2010-11-05 22:17 |只看该作者
本帖最后由 action08 于 2010-11-05 22:21 编辑

你自己的理解是正确的,根据你的需求应该选用第一段代码

论坛徽章:
0
4 [报告]
发表于 2010-11-05 22:52 |只看该作者
本帖最后由 程序c 于 2010-11-05 22:54 编辑

上面两位。

我想问,我其实是想先申请100个指针(仅占用指针的空间,结构体不申请)

那第一个代码不是上来一下就申请好所有指针和结构体的空间了

我的目标是:

申请100个指针,默认都是NULL

然后需要存储数据时,再申请结构体,让其中一个指针指向一个结构体

论坛徽章:
223
2022北京冬奥会纪念版徽章
日期:2015-08-10 16:30:32操作系统版块每日发帖之星
日期:2016-05-10 19:22:58操作系统版块每日发帖之星
日期:2016-02-18 06:20:00操作系统版块每日发帖之星
日期:2016-03-01 06:20:00操作系统版块每日发帖之星
日期:2016-03-02 06:20:0015-16赛季CBA联赛之上海
日期:2019-09-20 12:29:3219周年集字徽章-周
日期:2019-10-01 20:47:4815-16赛季CBA联赛之八一
日期:2020-10-23 18:30:5320周年集字徽章-20	
日期:2020-10-28 14:14:2615-16赛季CBA联赛之广夏
日期:2023-02-25 16:26:26CU十四周年纪念徽章
日期:2023-04-13 12:23:10操作系统版块每日发帖之星
日期:2016-05-10 19:22:58
5 [报告]
发表于 2010-11-05 22:54 |只看该作者
你想做第2个啊,做吧,,,C语言就是灵活自由

论坛徽章:
223
2022北京冬奥会纪念版徽章
日期:2015-08-10 16:30:32操作系统版块每日发帖之星
日期:2016-05-10 19:22:58操作系统版块每日发帖之星
日期:2016-02-18 06:20:00操作系统版块每日发帖之星
日期:2016-03-01 06:20:00操作系统版块每日发帖之星
日期:2016-03-02 06:20:0015-16赛季CBA联赛之上海
日期:2019-09-20 12:29:3219周年集字徽章-周
日期:2019-10-01 20:47:4815-16赛季CBA联赛之八一
日期:2020-10-23 18:30:5320周年集字徽章-20	
日期:2020-10-28 14:14:2615-16赛季CBA联赛之广夏
日期:2023-02-25 16:26:26CU十四周年纪念徽章
日期:2023-04-13 12:23:10操作系统版块每日发帖之星
日期:2016-05-10 19:22:58
6 [报告]
发表于 2010-11-05 22:55 |只看该作者
记得只申请指针的话,memset-zero一下

论坛徽章:
0
7 [报告]
发表于 2010-11-05 22:55 |只看该作者
噢,谢谢上面讲解,我自己在好好想想。不知道为什么总是想不通。

论坛徽章:
0
8 [报告]
发表于 2010-11-05 23:38 |只看该作者
后一种方法是申请了指针数组, 既然为了节省空间, 就用链表, 不要用数组了

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
9 [报告]
发表于 2010-11-06 00:14 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
10 [报告]
发表于 2010-11-06 10:12 |只看该作者
后一种方法是申请了指针数组, 既然为了节省空间, 就用链表, 不要用数组了
zhainx 发表于 2010-11-05 23:38




    想做成HASH表。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP