操作链表时,需要动态地分配和释放节点。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函数的功能是释放“指针变量名”所指向的连续内存空间。释放之后,该连续内存空间才可以被其他变量所使用。例如:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。