您的位置:首页 > 其它

动态存储分配

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函数人工释放这些内存。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: