C语言 堆区空间,malloc

简介: 前面测试,普通的数组变量默认最大不能申请1M的空间,甚至远少于1M的空间,毕竟程序中的其他变量也需要使用空间。总共就1M,要省着用。想要使用更大的,没有限制的空间,C语言给我们提供了方式:

前言


一、堆区空间的理解:


前面测试,普通的数组变量默认最大不能申请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个空间。

7d81b73e2825fe23e1d5cbd127fccdd.png

做 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 的使用。


相关文章
|
15天前
|
程序员 C语言 开发者
pymalloc 和系统的 malloc 有什么区别
pymalloc 和系统的 malloc 有什么区别
|
11天前
|
程序员 C语言 开发者
pymalloc 和系统的 malloc 有什么区别?
pymalloc 和系统的 malloc 有什么区别?
|
5月前
|
存储 C语言
malloc
【6月更文挑战第16天】
67 8
|
1月前
|
程序员 编译器 C语言
C中的 malloc 和C++中的 new 有什么区别
在C语言中,`malloc`函数用于在运行时分配内存,返回指向所分配内存的指针,需显式包含头文件 `<stdlib.h>`。而在C++中,`new`不仅分配内存,还对其进行构造初始化,且直接使用类型声明即可,无需额外包含头文件。`new`还支持数组初始化,能更好地融入C++的面向对象特性,而`malloc`仅作为内存分配工具。使用完毕后,`free`和`delete`分别用于释放`malloc`和`new`分配的内存。
51 21
|
5月前
|
存储 C语言
C语言学习记录——动态内存函数介绍(malloc、free、calloc、realloc)
C语言学习记录——动态内存函数介绍(malloc、free、calloc、realloc)
333 1
|
5月前
|
C语言
【C语言】:动态内存管理函数malloc,calloc,realloc和free的介绍的介绍
【C语言】:动态内存管理函数malloc,calloc,realloc和free的介绍的介绍
65 0
|
6月前
|
存储 算法 C语言
从C语言到C++_38(C++的IO流+空间适配器)STL六大组件联系(下)
从C语言到C++_38(C++的IO流+空间适配器)STL六大组件联系
59 5
|
5月前
|
程序员 C语言
C语言内存管理:malloc、calloc、realloc与free函数详解
C语言内存管理:malloc、calloc、realloc与free函数详解
155 0
|
6月前
|
存储 安全 编译器
【C语言】动态内存管理 -- -- 深入了解malloc、calloc、realloc、free、柔性数组(万字深入了解)
【C语言】动态内存管理 -- -- 深入了解malloc、calloc、realloc、free、柔性数组(万字深入了解)
66 0
【C语言】动态内存管理 -- -- 深入了解malloc、calloc、realloc、free、柔性数组(万字深入了解)
|
5月前
|
缓存 C语言
glibc函数malloc的工作原理
glibc函数malloc的工作原理
41 0