本篇通过记录malloc及相关函数讲解动态内存分配
定义:通过malloc函数可以在堆中申请指定长度的内存
动态内存申请的实现:通过地址+长度的map结构实现动态内存的管理
头文件:#include <stdlib.h>
void *malloc(size_t size);
funcation:在堆中申请指定长度字节的内存地址
参数:用于指定申请内存的长度
返回值:返回申请内存的首地址
int *arr=malloc(100);
// 申请1、25*4=100字节长度的内存
// 将返回的 void *型指针转换成 int *
void *calloc(size_t nmemb, size_t size);
funcation:在堆中申请指定数量的相同数据类型的内存
参数:nmemb-指定这一数据类型的元素的个数
size-指定这一数据类型所占的字节数
返回值:返回一个void *型的指针,指向申请内存的首地址
void *realloc(void *ptr, size_t size);
function:基于已申请的内存,做申请内存长度的伸缩
参数:ptr-已申请的堆内存的返回值
size-申请内存的长(字节),
void free(void *ptr);
funcation:用于释放申请的内存地址,防止内存泄露
参数:申请的内存的首地址,如果为非首地址,会导致报错
void *memset(void *buffer, int ch, size_t count);
function:对申请的内存进行置位
参数:buffer-需要置位的内存的首地址
ch-需要置位成ch
count-需要置位的内存长度
返回值:
A&Q1:报错-incompatible implicit declaration of built-in function ‘malloc’
请加入头文件 #include <stdlib.h>
#include <string.h>