| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 415 人关注过本帖
标题:很简单的问题啊,哪错了呢?
只看楼主 加入收藏
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
 问题点数:0 回复次数:5 
很简单的问题啊,哪错了呢?

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int *Fun(void);

int main(void)
{
int *pia;

if((pia = (int *)malloc(sizeof(int))) == NULL)
{
exit(1);
}

pia= Fun();

printf("*pia = %d\n", *pia);

getch();
return 0;
}

int *Fun(void)
{
int ia = 15;

return (&ia);
}

2006-04-23 14:02
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
收藏
得分:0 

NO WRONG.


我的原则很简单:不做不喜欢的事!
2006-04-23 14:22
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 

if((pia = (int *)malloc(sizeof(int))) == NULL)
{
exit(1);
}

可以去掉.
我认为函数返回的指针指向的变量空间并没有释放。

对不礼貌的女生收钱......
2006-04-23 14:27
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
收藏
得分:0 
以下是引用soft_wind在2006-4-23 14:27:00的发言:

if((pia = (int *)malloc(sizeof(int))) == NULL)
{
exit(1);
}

可以去掉.
我认为函数返回的指针指向的变量空间并没有释放。

在这里去掉没出问题,但是在程序中当你分配了内存后要加上这一句,因为这句是用来检查内存有没有分配成功,如果没有成功就会返回一个NULL指针.下面那句free()没有正解.


我的原则很简单:不做不喜欢的事!
2006-04-23 14:39
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 

我想楼上的误会了我的意思,我是说没必要申请内存.
您的意思我理解.


对不礼貌的女生收钱......
2006-04-23 14:41
jslq0130
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-4-24
收藏
得分:0 

int *Fun(void)
{
int ia = 15;

return (&ia);
}
返回的是指针,而上面的&ia是栈空间,在子程序结束时就完蛋了.而指针不能返回栈空间.它要返回堆指针.

2006-04-24 23:53
快速回复:很简单的问题啊,哪错了呢?
数据加载中...
 
   



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

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