| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1030 人关注过本帖
标题:野指针,这个为什么有错呢??
只看楼主 加入收藏
丢丢在墙角
Rank: 2
等 级:论坛游民
帖 子:6
专家分:15
注 册:2010-7-30
收藏
得分:5 
free只能释放掉动态分配的指针。你的指针是int *p;有实际的存储单元(一般系统中为4个字节),来放指针指向的地址的。一般free和malloc等配合使用。
2010-10-26 18:55
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:5 
程序代码:
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
    int n=100;
    int *p;
    p=(int *)malloc(sizeof (int));
    //p=&n; //此时的p已经不是指向用malloc分配的虚拟地址了,
            //而是指向一个栈地址,栈没有所谓内存释放,只有进栈和出堆
    *p=10;
    printf("%d\n",n);
    printf("%d\n",*p);
    printf("%x\n",p);
    free(p);
    printf("%d\n",n);
    printf("%d\n",*p);
    printf("%x\n",p);
    p=NULL;
    printf("%d\n",n);
    //printf("%d\n",*p);  //p已经不指向任何内存了。
    printf("%x\n",p);
    system("pause");
    return 0;
}

/images/2011/147787/2011051411021524.jpg" border="0" />
2010-10-26 19:14
快速回复:野指针,这个为什么有错呢??
数据加载中...
 
   



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

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