局部变量的疑问

[复制链接]
 楼主| 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已经无效了,但是那个内存还在那里。你用指向它的指针去访问它还是可以做到,尽管已经超出了语言的定义了,但编译器又不知道
txcy 发表于 2012-5-25 15:44 | 显示全部楼层
LZ很有想法
您需要登录后才可以回帖 登录 | 注册

本版积分规则

304

主题

2313

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部