动态存储分配
2016-10-10 21:23
302 查看
malloc:分配一块长度为size字节的连续内存空间(不清零),函数返回该空间的首地址;如分配失败函数返回0.
calloc:分配n块、每块长度为size字节的连续内存空间(共size*n字节),并将该空间的内容全部清零,函数返回该空间的首地址;如分配失败函数返回0.
free:释放ptr所指向的一块内存空间,ptr是由malloc或calloc函数所分配空间的地址,既是这两个函数的返回值(或类型转换后的返回值)
应包含头文件stdlib.h,要分配一些内存,可以调用malloc或calloc函数,只要在参数中给出要分配的字节数就可以了。
用malloc或calloc分配的内存空间,是我们向计算机借来的,在使用完后一定要还给c语言。这和定义变量不同,通过定义变量分配的变量的空间会被系统自动回收,而通过malloa或calloc分配的空间系统不会自动回收,需要我们人工调用函数来回收,要回收一个用malloc或calloc分配的空间,调用free函数即可。
malloc和calloc都是在堆中分配内存的,堆是内存中的一个区域,它是相对于栈内存而言的。我们可以简单地认为,函数中的局部变量都在栈内存中,他们的特点实在函数结束后这些空间全被自动回收,而堆内存与栈内存是两个区域,堆内存中的内容在函数结束后并不会被自动回收。因此通过malloc和calloc申请内存后,一定要记得用free函数人工释放这些内存。
calloc:分配n块、每块长度为size字节的连续内存空间(共size*n字节),并将该空间的内容全部清零,函数返回该空间的首地址;如分配失败函数返回0.
free:释放ptr所指向的一块内存空间,ptr是由malloc或calloc函数所分配空间的地址,既是这两个函数的返回值(或类型转换后的返回值)
应包含头文件stdlib.h,要分配一些内存,可以调用malloc或calloc函数,只要在参数中给出要分配的字节数就可以了。
用malloc或calloc分配的内存空间,是我们向计算机借来的,在使用完后一定要还给c语言。这和定义变量不同,通过定义变量分配的变量的空间会被系统自动回收,而通过malloa或calloc分配的空间系统不会自动回收,需要我们人工调用函数来回收,要回收一个用malloc或calloc分配的空间,调用free函数即可。
malloc和calloc都是在堆中分配内存的,堆是内存中的一个区域,它是相对于栈内存而言的。我们可以简单地认为,函数中的局部变量都在栈内存中,他们的特点实在函数结束后这些空间全被自动回收,而堆内存与栈内存是两个区域,堆内存中的内容在函数结束后并不会被自动回收。因此通过malloc和calloc申请内存后,一定要记得用free函数人工释放这些内存。
相关文章推荐
- 通信实验 动态分区存储管理方式的主存分配回收 查错
- PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
- c++中使用new动态分配存储空间
- 用new和delete运算符进行动态分配和撤销存储空间
- 动态存储分配及释放
- 存储空间动态分配
- 简述动态存储分配及malloc(),free()函数(针对linux)
- 编写一个函数,此函数使用动态存储分配来产生一个字符串的副本。例如函数为strclone,则调用p=strclone(str),将会为一个新的字符串分配和str占内存大小相同的一个字符串,并将字符串st
- 存储空间的动态分配与释放
- 编写一个函数,从标准输入读取一列整数,把这些值存储于一个动态分配的数组中并返回这个数组。函数通过观察EOF判断输入列表是否结束。数组的第一个数是数组包含的值的个数,他的后面就是这些整数值。
- PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
- 动态存储空间分配
- 存储空间的动态分配与释放
- c语言动态存储分配
- C里面的内存动态分配函数与存储类别
- 链式存储结构————动态分配
- 二维指针、数组指针和指针数组存储空间的动态分配和释放
- 简述动态存储分配及malloc(),free()函数
- 动态分配存储的顺序表
- 使用Ceph集群作为Kubernetes的动态分配持久化存储