C语言内存管理

内存管理函数

C语言为内存的分配和管理提供了几个函数。这些函数可以在<stdlib.h>头文件中找到。
void calloc(int num, int size);
在内存中动态地分配num个长度为size的连续空间,并将每一个字节都初始化为0。所以他的结果是分配了num
size个字节长度的内存空间,并且每个字节的值都是0。
void *free(void *address);
该函数释放address所指向的内存块,释放的是动态分配的内存空间。
void *malloc(int num);
在堆分配一块指定大小的内存空间,用来存放数据。这块内存空间在函数执行完后不会被初始化,他们的值是未知的。
void *realloc(void address, int newsize);
该函数重新分配内存,把内存扩展到newsize。
【void 表示未确定类型的指针。C/C++规定void类型可以通过类型转换强制转换为任意其他类型的指针】

动态分配内存

编程时,如果预先知道数组大小,那么定义数组时就比较容易。例如,一个存储人名的数组,它最多容纳100个字符,那么定义数组的时候就可以使 char name[100];
但是,如果您预先不知道需要存储的文本长度,就需要定义一个指针,该指针指向未定义所需要内存大小的字符,后续再根据需求来分配内存
/动态分配内存/
description = (char )malloc(200sizeof(char));
也可以用calloc来编写,只需要把malloc替换成calloc
calloc(200*sizeof(char));
重新调整内存的大小和释放内存
当程序退出时,操作系统会自动自动释放所有分配给程序的内存,但是,建议您在不需要内存时,都应该调用函数free()来释放内存。
或者,您可以通过调用函数realloc()来增加或减少内存块的大小。让使用realloc()和free()函数
/假设想要存储更大的描述信息/
description = (cahr )realloc(description, 100sizeof(char));
/使用free()函数释放内存/
free(description)
【对于手动分配内存,在C语言中是不用强制转换类型的,但是C++强制要求类型转换,不然会报错】

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值