头文件:stdlib.h string.h
一.申请动态分配内存malloc
stdlib.h中定义函数void* malloc(size_t size),向系统申请大小为size的内存空间。返回结果是void*,使用时转换成需要的指针类型。如果申请失败,返回NULL。
void 指针是一种特殊的指针,表示为“无类型指针”,任何类型的指针都可以直接赋值给 void 指针,而无需进行其他相关的强制类型转换,虽然如此,但这并不意味着可以无需任何强制类型转换就将 void 指针直接赋给其他类型的指针,要进行强制类型转换。
二.释放动态分配内存free()
#include#include int main(){ int n; scanf("%d",&n); //int arr[n]; //malloc写法输入数组 int* arr = malloc(sizeof(int)*n); for(int i=0;i 三.初始化动态分配内存calloc
在Linux中malloc和calloc都会分配
int* arr = (int*)calloc(n,sizeof(int)); free(arr);近似于
int arr[n] = {0};四.重新调整内存大小realloc
void* realloc (void* ptr, size_t size);
- 如果当前内存段后面有足够的内存空间,那么就直接扩展这段内存,realloc()返回原来的首地址;
- 如果当前内存段后面没有足够的内存空间,那么系统会重新向内存树申请一段合适的空间,并将原来空间里的数据块释放掉,而且realloc()会返回重新申请的堆空间的首地址;
- 如果创建失败,返回NULL, 此时原来的指针依然有效;



