| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 493 人关注过本帖
标题:链表的一个小问题求解
只看楼主 加入收藏
qq1625127317
Rank: 6Rank: 6
等 级:等待验证会员
威 望:1
帖 子:185
专家分:450
注 册:2015-9-3
结帖率:83.33%
收藏
已结贴  问题点数:10 回复次数:7 
链表的一个小问题求解
p1 = p2 = (struct student *)malloc(sizeof(struct student));
    if(p2 != NULL)
    {
        scanf("%d%c%d",&p2 -> num,&p2 -> nume;&p2 -> score);
        p2 -> pnext = NULL;
    }
    就是上面的问题,分配的新节点 p2 为什么要判断是不是NULL?就是有的程序上没有这个判断,而有的有,这是不是说这条语句没有什么实际的作用呢?还是说有什么其他的用途?
2015-09-23 09:24
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:2 
来自百度百科 malloc
返回值

如果分配成功则返回指向被分配内存的指针(此存储区中的初始值不确定),否则返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。函数返回的指针一定要适当对齐,使其可以用于任何数据对象。


[fly]存在即是合理[/fly]
2015-09-23 09:29
来生再见
Rank: 1
来 自:江西省抚州市
等 级:新手上路
威 望:1
帖 子:39
专家分:9
注 册:2015-9-13
收藏
得分:0 
回复 楼主 qq1625127317
具体代码具体分析,

重新开始,努力
2015-09-23 10:51
the_second
Rank: 2
等 级:论坛游民
帖 子:115
专家分:80
注 册:2015-9-13
收藏
得分:2 
判断是否分配内存空间成功,
如果不成功,链表就无法建立
2015-09-23 16:12
qq1625127317
Rank: 6Rank: 6
等 级:等待验证会员
威 望:1
帖 子:185
专家分:450
注 册:2015-9-3
收藏
得分:0 
回复 4楼 the_second
可是有的就没有进行判断

从前风闻有你,现在我亲眼看见你
2015-09-23 21:40
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:6 
以下是引用qq1625127317在2015-9-23 21:40:56的发言:

可是有的就没有进行判断

要不要判斷取決於程序的前提,在少量分配而且程序很快結束的情況下,基本上不會導致堆內存申請失敗,這個時候是可以不判斷的。事實上,在當今的計算機系統上,如果程序不是永不停機及相當龐大複雜,通常都不用做這種判斷了。怎麼使用內存的,會不會導致問題,程序員自己應該清楚。

[ 本帖最后由 TonyDeng 于 2015-9-24 11:36 编辑 ]

授人以渔,不授人以鱼。
2015-09-24 11:35
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
現實的問題是,檢測這種申請失敗很簡單,但如何處理卻很頭痛。隨著程序的深入和邏輯複雜,一旦申請失敗,是不能簡單地終止程序了事的,比如還有很多和未知順序的已打開資源需要依次關閉、要逐級回退等等,但既然現在內存申請都失敗了,那麼後續的這些動作也極可能仍然因內存問題而失敗(之前可以順利執行並不等於在內存不足後仍然可以執行),這時引起的連鎖錯誤根本是無法合理處置的,這也是操作系統往往對這類錯誤彈窗“優雅”地殺死進程的原因,別無更好的辦法。因此,對這類問題,最好、最優先考慮的對策,是自己掌握,儘量減少內存碎片和過度使用內存,適時交還佔用的內存和合併內存碎片——不要以為gc管理那麼容易,不少人自以為別的系統那一套很有效輕易去吐槽別人的機制。

[ 本帖最后由 TonyDeng 于 2015-9-24 13:11 编辑 ]

授人以渔,不授人以鱼。
2015-09-24 12:08
qq1625127317
Rank: 6Rank: 6
等 级:等待验证会员
威 望:1
帖 子:185
专家分:450
注 册:2015-9-3
收藏
得分:0 
回复 7楼 TonyDeng
谢谢指点!

从前风闻有你,现在我亲眼看见你
2015-09-24 23:31
快速回复:链表的一个小问题求解
数据加载中...
 
   



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

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