C语言标准函数库提供了四个函数malloc()、calloc()、realloc()、free(),这几个函数都包含在"stdlib.h"这个存储管理数据库中。
一、相关函数
1.malloc()函数
动态分布一段存储空间,mallloc函数返回一个指针,并指向分配该存储空间的起始地址,如果没有存储空间可以分配,就会返回空指针NULL。
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
/*用malloc函数分配了int的存储空间,将存储空间的地址转换成
int型的,存到了指针变量iIntMalloc里面*/
int *iIntMalloc = (int *)malloc(sizeof(int));
*iIntMalloc=100;
printf("%d",*iIntMalloc);
}
2.calloc()函数
动态分配连续的存储空间,功能是申请n倍的size字节的存储空间,并指向分配该存储空间的起始地址,如果没有存储空间可以分配,就会返回空指针NULL。
#include<stdio.h>
#include<stdlib.h>
#define LEN sizeof(char[26])
int main(void)
{
int i;
char *ch1=(char *)calloc(26,sizeof(char));
char *ch2=(char *)malloc(LEN);
for(i=0;i<26;i++){
ch1[i]=65+i;
ch2[i]=97+i;
}
printf("输出大写字母啦:\n");
for(i=0;i<26;i++){
printf("%c\t",ch1[i]);
}
printf("\n输出小写字母啦:\n");
for(i=0;i<26;i++){
printf("%c\t",ch2[i]);
}
}
所以不同方法也能输出相似内容。
3、free()
将指针所指向的内存空间释放。
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int *p=(int *)malloc(sizeof(4));
*p=100;
free(p);
}
二、链表
最常见的动态存储分配方式。