理论教育 C语言程序设计:内存分配与释放函数

C语言程序设计:内存分配与释放函数

时间:2023-11-02 理论教育 版权反馈
【摘要】:操作链表时,需要动态地分配和释放节点。C语言提供了相应的函数,用于对内存空间的申请和释放。malloc函数的返回值为void类型指针,在使用该函数时,需要将该返回值强制转换为所需的类型。另外,如果已使用malloc函数或calloc函数分配了内存空间,要想改变其大小,则可以使用realloc函数重新分配内存空间。

C语言程序设计:内存分配与释放函数

操作链表时,需要动态地分配和释放节点。C语言提供了相应的函数,用于对内存空间的申请和释放。在使用这些函数时,需要使用#include命令将“malloc.h”或“stdlib.h”包含进来。

1.malloc函数

malloc函数的功能是申请内存空间。其调用格式如下:

可以使用malloc函数申请size字节大小的一块连续内存空间。如果函数调用成功,则返回该连续内存空间的首地址;如果申请空间失败,就说明没有足够的空间可供分配,则返回空指针NULL。

malloc函数的返回值为void类型指针,在使用该函数时,需要将该返回值强制转换为所需的类型。例如,申请一个动态的int型所需的连续内存空间,可使用以下语句:

申请50个动态的int型所需的连续内存空间,可用以下语句:

申请一个动态的链表节点所需的连续内存空间,可用以下语句:

其中,函数sizeof用于计算某个类型(或变量)所占的字节数。例如,“sizeof(struct course)”用于为计算struct course结构类型所占的字节数;“malloc(sizeof(struct course))”的功能是分配一个struct course结构类型变量所占的内存空间;“struct course*”为强制类型转换,将malloc函数的返回值转换为指向struct course结构类型的指针。(www.daowen.com)

calloc函数也可以用于申请内存空间,其调用格式如下:

使用calloc函数申请的连续空间是n×size字节,其功能与malloc函数基本相同。如果调用函数calloc成功,则返回该连续内存空间的首地址;如果申请空间失败,则返回空指针NULL。

另外,如果已使用malloc函数或calloc函数分配了内存空间,要想改变其大小,则可以使用realloc函数重新分配内存空间。realloc函数的调用格式如下:

其功能是将p指向的内存空间的大小变为size字节,p的值不变。若分配失败,则返回空指针NULL。

2.free函数

对于用函数malloc或calloc申请的空间,在使用结束后必须用free函数释放,所以free与malloc或calloc经常配对使用。函数free的调用格式如下:

free函数的功能是释放“指针变量名”所指向的连续内存空间。释放之后,该连续内存空间才可以被其他变量所使用。例如:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈