C指针原理(42)-内存管理与控制

C语言的stdlib库提供了内存分配与管理的函数:

1、通过调用calloc、malloc和realloc所分配的空间,如果连续调用它们,不能保证空间是顺利或连续的。当分配成功后,函数将返回一个指针,这个指针指向分配成功的空间的开始位置, 它可以被指向任意类型的对象,当分配空间失败后,返回NULL指针。

2、通过free函数释放空间。

3、函数说明

(1)calloc函数

函数的原型为:

void *calloc(size_t nmemb,size_t size);

为nmemb个对象的数组分配空间,每个元素的大小为size,分配的空间所有位被初始为0。

(2)free函数

函数的原型为:

原型:extern void free(void *ptr);

释放指针ptr所指向的的内存空间。ptr所指向的内存空间必须是用calloc,malloc,realloc所分配的内存。如果ptr为NULL或指向不存在的内存块则不做任何操作。

释放的空间还可以被重新分配,

(3)malloc函数

void *malloc(size_t size);

分配长度为size字节的内存块。如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。

(4)realloc函数

void realloc(void ptr, size_t size);

改变ptr所指内存区域的大小为size长度。如果重新分配成功则返回指向被分配内存的指针,否则返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。新分配空间比空间大,并包括原空间的的内容,但因为分配新空间,没有初始化0的操作,所以新空间中除去旧空间的部分的内容不能保证清空为零。

4、C语言中数据对象空间分配原理
C语言中的数据对象存储在以下3种空间中:

(1) 程序在开始执行前,分配 静态存储空间,并进行初始化,如果没有指定数据对象的初始值,则每个标题 的值 初始化为零。这样的数据对象在程序结束前一直存在。

(2) 程序在每一个程序块的入口分配动态存储空间。如果没有指定数据初始值&#

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值