天天看点

内存分配函数

内存分配包括

静态分配:编译时确定内存大小,不一定在编译时分配,比如:局部变量放在栈里.

动态分配:在编译时不知道内存多大,在运行时动态分配。

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之一得到的地址)

阅读(800) | 评论(0) | 转发(1) |

上一篇:​​标准I/O操作函数​​

继续阅读