动态存储分配

简述

概念使程序在运行过程中能根据需要分配内存空间,其分配的内存空间通常称为堆。

具体操作:用一指针指向动态存储分配得到的内存空间,此后通过对指针的操作,就可以使用这个内存空间了。

使用的四个函数:malloc函数,calloc函数,realloc函数,free函数。使用这些函数必须包含<stdlib.h>文件

1,malloc函数   

void* malloc(size_t size);

在c99之后,可以通过下面方法来分配内存空间的值

但是在c99之前要通过malloc来进行动态存储分配。

#include<stdio.h>
#include<stdlib.h>
int main() {
	int length;
	scanf_s("%d", &length);
	//int  array[length];
	int* p = (int*)malloc(length * sizeof(int));
	/*将指针p指向malloc分配得到的内存地址。*/
	for (int i = 0;i < length;i++) {
		printf("array[%d]的地址:%p,值:%d\n", i, &p[i], p[i]);
	}
	return 0;
}

对于上面malloc函数的使用   int* p = (int*)malloc(length * sizeof(int)),

注意:因为malloc函数是void类型的指针,所以在将其赋给指针p时要强制转化成int型。

因为malloc返回值的void,无法将voi给int,只有通过(int*)来强制转换。

malloc不会对分配内存空间初始化

 2,calloc函数

void* calloc(size_t nmemb,size_t size);

与malloc的使用相似,只是calloc函数有两个参数。第一个为空间个数,第二个为每个空间的大小。

 与malloc函数不同的是,calloc会对分配的内存空间初始化。

 3.realloc函数

void* realloc(viod* ptr,size_t size);

realloc函数用于调整先前分配的内存空间的大小,并返回该内存空间的通用指针,ptr指向的是先前已分配的内存空间,size表示新内存空间的大小。

 

 4.free函数

void free(void* ptr);

free释放由malloc / calloc函数分配的内存空间,指针ptr指向要释放的空间。

 内存被释放为空

 补充

如果不能成功分配指定大小的内存空间,这些函数会返回空指针NULL。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值