c语言中malloc函数的用法(附带实例)
内存的全局存储空间中,程序可动态分配和释放的内存块称为自由存储空间,也称为堆。
C程序中,用 malloc() 和 free() 函数来从堆中动态地分配和释放内存。
malloc() 函数成功分配内存空间后会返回一个指针,因为分配的是一个 int 型空间,所以返回指针时也应该使用对应的 int 型指针,这样就要进行强制类型转换。最后将函数返回的指针赋值给指针 pInt,就可以保存动态分配的整型空间地址了。
【实例】某明星的演唱会,会馆可以容纳一万人。申请内存,存储人数信息,并将人数输出。
运行程序,结果为:
例如,释放一个分配给整型变量的内存空间:
【实例】将分配的内存进行释放,释放前先输出一次内存中保存的数据,释放后再利用指针输出一次。观察两次的结果,可以看出,调用 free() 函数之后内存被释放了。
C程序中,用 malloc() 和 free() 函数来从堆中动态地分配和释放内存。
C语言malloc()函数
malloc() 函数的功能是在内存中动态地分配一块 size 大小的内存空间。其原型如下:void *malloc(unsigned int size);使用 malloc() 函数,要包含 <stdlib.h> 头文件。malloc() 函数会返回一个指针,指向分配的内存空间。如果分配出现错误,则返回 NULL。
例如,使用 malloc() 函数分配一个整型内存空间:注意,使用 malloc() 函数分配的内存空间位于堆中,而不是栈中。因此,在使用完这块内存之后,一定要将其释放掉,释放内存空间使用的是 free() 函数。
int *plnt; /* 定义指针 */ plnt = (int*)malloc(sizeof(int)); /* 指针指向分配的 int 型空间 */首先定义指针 pInt,用来保存分配的内存地址。在使用 malloc() 函数分配内存空间时,需要指定内存空间的大小(size),这里调用 sizeof() 函数就可以得到指定类型的大小。
malloc() 函数成功分配内存空间后会返回一个指针,因为分配的是一个 int 型空间,所以返回指针时也应该使用对应的 int 型指针,这样就要进行强制类型转换。最后将函数返回的指针赋值给指针 pInt,就可以保存动态分配的整型空间地址了。
【实例】某明星的演唱会,会馆可以容纳一万人。申请内存,存储人数信息,并将人数输出。
#include <stdlib.h> #include <stdio.h> int main() { int* iIntMalloc; iIntMalloc = (int*)malloc(sizeof(int)); /* 分配一个整型内存空间 */ *iIntMalloc = 10000; /* 使用该空间保存人数信息 */ printf("现场有%d人\n", *iIntMalloc); /* 输出数据 */ free(iIntMalloc); return 0; }程序中首先使用 malloc() 函数分配了一个 int 型内存空间,用指针 iIntMalloc 指向它,然后使用该空间保存演唱会人数信息,最后显示该数据。
运行程序,结果为:
现场有10000
C语言free()函数
free() 函数的功能是释放指针 ptr 指向的内存区域,使该内存区域能被其他变量所使用。其原型如下:void free(void *ptr);其中,ptr 是最近一次调用 malloc() 函数时返回的值。free() 函数无返回值。
例如,释放一个分配给整型变量的内存空间:
free(pInt);代码中,pInt 为一个指向整型大小的内存空间,使用 free() 函数将其进行释放。
【实例】将分配的内存进行释放,释放前先输出一次内存中保存的数据,释放后再利用指针输出一次。观察两次的结果,可以看出,调用 free() 函数之后内存被释放了。
#include <stdio.h> #include <stdlib.h> int main() { int *plnt; /* 定义整型指针 */ plnt = (int*)malloc(sizeof(int)); /* 分配整型空间 */ *plnt = 100; /* 赋值 */ printf("分配的值是:%d\n", *plnt); /* 将值进行输出 */ free(plnt); /* 释放该内存空间 */ printf("释放完内存的值是:%d\n", *plnt); /* 将值进行输出 */ return 0; }运行程序,结果为:
分配的值是:100
释放完内存的值是:-572662307