打印

局部变量的疑问

[复制链接]
820|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sinadz|  楼主 | 2012-5-24 22:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void testFun()
{
   
void
**poiter = NULL;

   
if(!poiter)
    {
        
int i =
10;
        
int
*p =
&i;
        poiter
= (void**)&p;
    }

   
if (*poiter)
    {
        
*poiter = (void*)0x0012f2d0;//这一句其实是操作上面代码块的局部变量p,
                                    
//可是p是属于上面代码块的局部变量啊,出了上面的代码块,
                                    
//p不就已经不存在了吗?可是这样的赋值操作为什么没报错??
    }
}

相关帖子

沙发
秋天落叶| | 2012-5-24 22:48 | 只看该作者
函数结束时 局部变量的内存空间被回收 但是内容可能没被其他数据覆盖

使用特权

评论回复
板凳
yybj| | 2012-5-24 23:04 | 只看该作者
强行赋值不会出错的。你用这个指针去访问内存才会出错的

使用特权

评论回复
地板
火箭球迷| | 2012-5-24 23:06 | 只看该作者
p已经无效了,但是那个内存还在那里。你用指向它的指针去访问它还是可以做到,尽管已经超出了语言的定义了,但编译器又不知道

使用特权

评论回复
5
txcy| | 2012-5-25 15:44 | 只看该作者
LZ很有想法

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

304

主题

2313

帖子

0

粉丝