返回信息流int *fun1()
{
int *p;
*p=10;
return p;
}
int *fun2()
{
int p;
p=10;
return &p;
}
int *fun3()
{
int *p;
p=(int *)malloc(sizeof(int));
return p;
}
最近有点晕,有哪位高手能帮我讲讲这三个函数会出现什么问题?
这是一条镜像帖。来源:北邮人论坛 / cpp / #38254同步于 2010/4/19
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
关于指针和函数的问题
mysterious03
2010/4/19镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
要是让大牛看见,该给你推荐各种书籍了。。。。
前两个相当有问题。
第一个引用了非法内存,里面可能是重要数据
第二个返回局部变量的指针,很可能后来就被覆盖掉了
第三个正确,给指针分配了空间,new操作符分配的空间知道显示的使用delete才会消失
VS会告诉你第一个使用了未经初始化的变量
【 在 mysterious03 (轻林) 的大作中提到: 】
: int *fun1()
: {
: int *p;
: ...................
我只是感觉3最可能没问题……
【 在 mysterious03 (轻林) 的大作中提到: 】
: int *fun1()
: {
: int *p;
: ...................
【 在 nickluchen 的大作中提到: 】
: 3不是一个好习惯吧,一般malloc和free最好是在一个函数层里。
: --
:
: ...................
对,呵呵,不过好像一般这个是面试必考题目之一啊。
int fun3(int *p)
{
p=(int *)malloc(sizeof(int));
return 1;
}//wrong..
恩,不过这个例子一般人都能说出来怎么回事
【 在 rainblue 的大作中提到: 】
: : 3不是一个好习惯吧,一般malloc和free最好是在一个函数层里。
: : --
: :
: ...................