Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1419810
  • 博文数量: 1334
  • 博客积分: 645
  • 博客等级: 上士
  • 技术积分: 5762
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-25 16:56
文章分类

全部博文(1334)

文章存档

2014年(108)

2013年(1059)

2012年(169)

分类: LINUX

2013-06-05 14:36:31

原文地址:内存分配函数 作者:leon_yu

内存分配包括
静态分配:编译时确定内存大小,不一定在编译时分配,比如:局部变量放在栈里.
动态分配:在编译时不知道内存多大,在运行时动态分配。
1.malloc函数
原型:void *malloc(size_t  n)
n是分配内存的大小,返回分配内存块的首地址,分配失败,返回NULL.内存是由OS分配的。
返回类型void *是指经过强制转换可以赋值给任何类型。
2.free函数
原型:void free(void * p)
p是malloc申请的动态内存首地址,是不能改变的,malloc与free成对使用,不能少用,防止出现内存泄露,也不能多用,free之后,p=NULL,可以防止野指针出现。

动态分配内存特点:
A.内存空间大小可以是一个变量,其值在运行时确定。
B.内存空间在运行时分配,在程序结束时回收,内存分配由OS参与完成
C.动态分配的内存空间在未释放之前均可以被引用,保证其生命期.

内存分配函数类似的还有calloc  ,realloc(参数里的*p,一定是malloc,calloc,realloc之一得到的地址)
阅读(152) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~