知识点介绍
在c语言中,编写程序有时不能确定数组应该定义为多大,因此这时在程序运行时要根据需要从系统中动态多地获得内存空间。所谓动态内存分配,就是指在程序执行的过程中动态地分配或者回收存储空间的分配内存的方法。动态内存分配不像数组等静态内存分配方法那样需要预先分配存储空间,而是由系统根据程序的需要即时分配,且分配的大小就是程序要求的大小。
C语言允许建立内存动态分配区域,以存放一些临时用的数据,这些数据不必在程序的声明部分定义,也不必等到函数结束时才释放,而是需要时随时开辟,不需要时随时释放。C语言中,内存的动态分配是通过系统提供的库函数来实现的,主要有malloc、calloc和 free 函数。
为什么使用动态内存分配?
需求:
程序运行的过程中,可能需要使用一些额外的内存空间。
malloc和free
malloc和free用于执行动态内存分配和释放
malloc所分配的是一块连续的内存,以字节为单位,并且不带任何的类型信息
free用于将动态内存归还系统
void* malloc(size_t size);
void free(void* pointer);
注意:
例
#include <stdio.h>
#include <stdlib.h>//malloc函数的头文件
int main() {
int a[5]={10,15,8,9,6};
int length;
printf("请输入你想分配内存空间的个数:");
scanf("%d",&length);
int *p = (int *)malloc(sizeof(int)*length);//指针变量p中存放的是动态分配内存块的起始地址
*p=10; //相当于a[0]
p[1]=15; //相当于a[1]
printf("%d %d\n",*p,p[1]);
return 0;
}
特别提醒:上面这个程序是有问题的,程序使用malloc申请了内存以后没有使用free函数释放掉,会引起内存泄露。
动态存储分配函数 void free(void *p) 功能:
注意:
下面是一个例子,演示了动态内存分配:
#include <stdio.h>
#include <stdlib.h...
掌握本节内容
登录后开始许愿
暂无评论,来抢沙发