灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2718回复:0

c语言初学-关于内存空间的问题

楼主#
更多 发布于:2012-09-06 12:30


[cpp]
#include<stdio.h>
#include<stdlib.h>
void main(){
    float *p = (float *)malloc(sizeof(float));
    //申请空间,如果成功返回空间地址,如果失败返回NULL
    *p = 10.0;//赋值
    printf("内存里的值=%f\n",*p);
    printf("内存的内存地址=%p\n",p);
    free(p);//释放空间
    printf("释放后的内存里的值=%d\n",*p);
    printf("释放后的内存地址=%p\n",p);
    //释放空间后,内存空间是没有消失的,依然存有那个空间地址;
    //系统却交给其它程序使用了,这个时候如果你再次使用这个空间地址,
    //就会把里面的数据破坏掉
    //所以这个时候要二次释放:
    //free(p);
    //但是这个会导致错误,为了避免出错,要记得进行下面的操作:
    p = NULL;
    printf("清空后的内存地址=%p\n",p);
}
结果:
内存里的值=10.000000
内存的内存地址=00540F08
释放后的内存里的值=-1610612736
释放后的内存地址=00540F08
清空后的内存地址=00000000
Press any key to continue


喜欢0 评分0
游客

返回顶部