动态内存分配_c语言学习笔记

[size=medium]1. 动态内存分配
1)与 静态内存分配 相对,指在程序运行中,根据程序的实际需要来分配一块大小合适的连续的内存单元。
2)动态分配的内存需要有一个指针变量记录内存的起始地址。
3)常用的动态内存分配函数有 [color=blue]malloc(), calloc(), realloc() 等。[/color]

2. [color=blue]malloc()[/color] 函数:
1)函数原型: [color=blue]void *malloc ( unsigned int size);[/color]
2)参数size,指申请分配的内存大小,一般写成 [color=blue]分配数量 x sizeof(内存单元类型)[/color]
3)返回值是NULL(空指针)时,表示分配内存失败;否则,返回值是一个指向空类型(void)的指针,说明返回的指针所指向的内存块可能是任何类型。[/size]

int n, *p;
scanf("%d", &n);
p = (int *) malloc( n * sizeof(int) ); // 分配n个连续的整型单元,首地址赋给p
if ( p == NULL ) // 分配内存失败,给出错误信息后退出
{
printf("分配内存失败!");
exit(0);
}
... //可对p所指向的单元进行其他处理


[size=medium]3. 函数 [color=blue]calloc()[/color]
1)函数原型: [color=blue] void *calloc ( unsigned int num, unsigned int size );[/color]
2)参数:num 表示向系统申请的内存空间的数量;size 表示申请的每个内存空间的字节数。
3)返回值:分配内存成功,返回一个 void 类型的连续存储空间的首地址;分配失败,返回空指针NULL。

4. 函数 [color=blue]realloc()[/color]
1)函数原型: [color=blue]void *realloc ( void *p, unsigned int size );[/color]
2)作用:将指针 p 所指向的存储空间的大小改为 size 个字节。用于改变原来分配的存储空间的大小。
3)适用于先前通过动态内存分配的存储空间需要进行扩充或缩小的情况,好处是原存储空间中的数据能保持不变。

5. 释放动态内存函数 [color=blue]free()[/color]
1)函数原型:[color=blue]void free( void *block );[/color]
2)参数 block 一般为指向分配的动态内存首地址的指针变量。
3)free() 函数一般和 malloc() 等函数成对使用。
[/size]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值