C语言 堆区空间,malloc
【摘要】 @TOC 前言 一、堆区空间的理解:前面测试,普通的数组变量默认最大不能申请1M的空间,甚至远少于1M的空间,毕竟程序中的其他变量也需要使用空间。总共就1M,要省着用。想要使用更大的,没有限制的空间,C语言给我们提供了方式:如下:malloc // 申请空间,理论上物理内存有多大,就能申请多大,当然并不能,电脑系统运行其他软件按也需要空间。兄弟函数:calloc 和 realloc 均可以...
@TOC
前言
一、堆区空间的理解:
前面测试,普通的数组变量默认最大不能申请1M的空间,甚至远少于1M的空间,毕竟程序中的其他变量也需要使用空间。总共就1M,要省着用。
想要使用更大的,没有限制的空间,C语言给我们提供了方式:
如下:
- malloc // 申请空间,理论上物理内存有多大,就能申请多大,当然并不能,电脑系统运行其他软件按也需要空间。
- 兄弟函数:calloc 和 realloc 均可以使用。
- free // 释放空间,申请的空间必须我们自己释放。
二、malloc:
- 使用:头文件:malloc.h (一定要加上,老版本可以不加,新版本一定要加上)
malloc 的函数原型:
void * malloc ( size_t_Size);
malloc 作用:申请一段空间,并返回该空间的首地址。 - void * : malloc 申请的空间首地址返回 void* ,我们可以将其转化为任意类型去使用。
- 参数: 要申请的字节数。
int * p = (int * ) malloc (sizeof ( int ) * 10); // 也可以直接写40
做10个int 类型的数组使用:
p[0] , p[1] , p[2] ,…p[8] , p[9]
例如:
这两者都是申请40个空间。
做 12 个元素的 3 行 4 列的 int 类型使用:
int ( * p) [4] = (int ( * )[4]) malloc ( sizeof ( int ) * 3 * 4);
p[0][0]…p[2][3] 共12个元素。
用法类比之前学的:(两者都是一样的,申请48空间)
int a[3][4];
int (*p)[4]=a;
总结
下一节 free 的使用。
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)