返回指向局部变量的指针很安全哪

weiweishuo 2012-06-30 01:29:19
下面一段程序:
int main(void){
int *j=getPInt();
pad();
pad();
pad();
pad();
pad();
printf("j points to a local location,it is%d",*j);//输出100;
}

void pad(void){
int a=0;
}

int *getPInt(void){
int i=100;
return &i;
}
我以为不会输出是100,因为getPInt函数返回,它的局部变量i那块儿内存也就被弹出栈空间。
我在pad函数里定义变量,想继续堆栈把那块儿“100”的内存给覆盖掉。
为什么还会是100呢?
我只是想验证返回指向局部变量的指针不保险,可发现它很安全那!
小弟新手,言辞愚蠢之处还请指教。-.-
...全文
150 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
weiweishuo 2012-07-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

我的输出的是0.楼主换个编译器试试,你只是运气好而已,同楼上

akaedu@akaedu:~/write$ gcc 1.c
1.c: In function ‘getPInt’:
1.c:11: warning: function returns address of local variable
akaedu@akaedu:~/write$ ./a.out
j points ……
[/Quote]用的就是gcc啊,不过你试出来为0,那暂且放心了!
N0bug 2012-06-30
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
下面一段程序:
int main(void){
int *j=getPInt();
pad();
pad();
pad();
pad();
pad();
printf("j points to a local location,it is%d",*j);//输出100;
}

void pad(void){
int a=0;
}


in……
[/Quote]
你觉得安全就用呗 谁关心你这个啊
AnYidan 2012-06-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
结果是未定义的。

这次是楼主运气好,下次就未必了。
[/Quote]

运气好? 运气不好!

一个正确的程序应该是可无限重复的
老王爱上猫 2012-06-30
  • 打赏
  • 举报
回复
我也纳闷这问题,我跟楼主一样,虽然知道是错的
竞天问 2012-06-30
  • 打赏
  • 举报
回复
你的代码在使用函数之前都不需要声明的?

我用VC2010试了一下,得到结果 0
竞天问 2012-06-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

呵呵,你很幸运,恰巧你返回的地址100是你想要得到的数值。但是其实你返回的是i的地址不是i的值,你这样试试:
int *getPInt(void){
int *i=100;
return *i;
}
[/Quote]
this is no help.
westlife_2011 2012-06-30
  • 打赏
  • 举报
回复
呵呵,你很幸运,恰巧你返回的地址100是你想要得到的数值。但是其实你返回的是i的地址不是i的值,你这样试试:
int *getPInt(void){
int *i=100;
return *i;
}

iamnobody 2012-06-30
  • 打赏
  • 举报
回复
不是不安全,而是根本就是一个错误!

一个错误什么时候会暴露给初学者知道?天知道.
左眼看到鬼 2012-06-30
  • 打赏
  • 举报
回复
我的输出的是0.楼主换个编译器试试,你只是运气好而已,同楼上

akaedu@akaedu:~/write$ gcc 1.c
1.c: In function ‘getPInt’:
1.c:11: warning: function returns address of local variable
akaedu@akaedu:~/write$ ./a.out
j points to a local location,it is0

pathuang68 2012-06-30
  • 打赏
  • 举报
回复
结果是未定义的。

这次是楼主运气好,下次就未必了。

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧