Chinaunix首页 | 论坛 | 博客
  • 博客访问: 228787
  • 博文数量: 75
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 848
  • 用 户 组: 普通用户
  • 注册时间: 2013-10-08 10:27
文章分类
文章存档

2014年(9)

2013年(66)

我的朋友

分类: C/C++

2013-12-04 15:14:16

内存分布:
代码区
全局变量与静态变量区(全局变量,字符串常量等)
局部变量区(栈区)(自动分配,自动回收)
动态存储区(堆区)


动态内存
1.内存申请malloc要注意:
     1)参数:要申请空间的大小
     2)返回值:void * 
     3)要加出错判断
2.内存释放free要注意:
     1)释放的一定是起始地址
     2)释放内存的一部分是不允许的
     3)不能重复释放
     4)防止内存泄露


野指针的出现情况:
     1)指针变量没有初始化
     2)p在free之后,没有设置为NULL,让人认为是合法的指针。
     3)指针操作越界了


杜绝野指针:
     1)指针变量要初始化,如 int *p = NULL;
     2)free之后,设置为NULL。如 free(p);p = NULL;
     3)指针操作不越界(检查目标空间的长度)


指针函数:返回值是地址(指针)的函数。
指针函数应该返回什么样的地址?
     1)静态存储区中的地址:
          a)全局变量地址
          b)static修饰的局部变量
          c)字符串常量的地址
     2)堆区的地址
     3)函数的参数是指针,可返回
阅读(1119) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~