指针与内存的动态分配(dynamic allocation)

      动态分配(dynamic allocation)是程序在运行中取得内存的方法。指针为C的动态分配系统提供必要的支持。全局变量是编译时分配的,而非静态的局部变量使用栈空间,两者都不能在运行中增减。然而,程序在运行中也可能需要数量可变的内存空间。例如,程序可能需要使用动态数据结构,如链表或二叉树。所以程序必须要根据需要分配和释放内存。

      C动态分配函数从堆(heap) ------ 系统的自由内存区 ------ 取得内存。堆中的自由内存量一般都很大。

      C动态分配系统的核心由函数malloc()和free()组成,前者分配内存,后者释放之。使用上述函数应包括头文件:<stdlib.h>。函数malloc()返回void型指针,表示可以赋给各类指针。成功的malloc()调用返回指针,指向由堆中分配的内存的第一个字节。如内存不够时调用失败,返回null。

      以下代码段分配1000字节的连续内存:

char *p;
p=malloc(1000);
      赋值后,p指向1000字节自由内存的首字节。
      下例为50个整数分配内存空间,其中sizeof确保程序的可移植性:

int *p;
p=malloc(50*sizeof(int));
      堆的大小也是有限的,所以分配内存后必须检查malloc()的返回值,确保指针使用前它是非null(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值