1. malloc
malloc用于动态分配内存,注意用完释放掉内存和指针
#include<stdio.h>
#include<stdlib.h>
int main(void){
//1. 分配内存
int* p = malloc(sizeof(int) * 5);
if(NULL == p){
printf("分配内存失败\n");
return -1;
}
printf("分配内存成功\n");
//2. 使用内存
int var = 10;
for(int i = 0; i < 5; i++)
p[i] = var + i;
for(int i = 0; i < 5; i++)
printf("%d ",p[i]);
printf("\n");
//3. 释放内存和指针
free(p);
p = NULL; //杜绝野指针
return 0;
}
2. calloc
malloc与calloc的微小区别:
int* p = malloc(sizeof(int) * 5); //存储区为任意值
int* p = calloc(5, sizeof(int)); //存储区为0
#include<stdio.h>
#include<stdlib.h>
int main(void){
//1. 分配内存
int* p = calloc(5, sizeof(int));
if(NULL == p){
printf("分配内存失败\n");
return -1;
}
printf("分配内存成功\n");
//2. 使用内存
int var = 10;
for(int i = 0; i < 5; i++)
p[i] = var + i;
for(int i = 0; i < 5; i++)
printf("%d ",p[i]);
printf("\n");
//3. 释放内存和指针
free(p);
p = NULL; //杜绝野指针
return 0;
}
3. realloc
用于重新分配内存,可增可减,原内容不变(当然,减的话会剪短)
p = realloc(p, 40);