在linux中,如何使用malloc()函数向操作系统申请堆内存,使用free()函数释放内存。
一、malloc函数原型
#include<stdlib.h>
void *malloc(size_t size);
函数的返回值以及含义如下:
size:需要分配的内存大小,以字节为单位。
返回值为 void *类型,如果申请分配内存成功,将返回一个指向该段内存的指针, void *并不是说没有返回值或者返回空指针,而是返回的指针类型未知。
所以在调用 malloc()时通常需要进行强制类型转换,将 void *指针类型转换成我们希望的类型;如果分配内存失败(譬如系统堆内存不足)将返回 NULL,如果参数 size 为 0,返回值也是 NULL
malloc()在堆区分配一块指定大小的内存空间,用来存放数据。这块内存空间在函数执行完成后不会被初始化,它们的值是未知的,所以通常需要程序员对 malloc()分配的堆内存进行初始化操作。
二、free()函数原型
#include<stdlib.h>
void free(void *ptr);
函数参数和返回值含义如下:
ptr: 指向需要被释放的堆内存对应的指针。
返回值: 无返回值。
#include<stdlib.h>
#include<stdio.h>
#include<string.h>#define MALLOC_MEM_SIZE (1* 1024 *1024)int main(int argc char *argv[])
{char *base = NULL;/*申请堆内存*/base = (char *)malloc(MALLOC_MEM_SIZE);if(NULL = base){printf("malloc error\n");exit(-1);} /*初始化申请到的堆内存*/memset(base,0x0,MALLOC_MEM_SIZE);/*使用内存*//*释放内存*/free(base);exit(0); }
运行结果: