C语言C语⾔提供了哪些动态内存分配函数?

一、问题

C语⾔中提供了⼏种相关函数,动态地开辟内存和释放存储单元。下⾯介绍⼀下这⼏种函数的功能。

二、解答

(1) malloc()函数。

函数原型为:

cpp 复制代码
void *malloc(unsigned int size);

该函数的功能是分配长度为 size 字节的内存块。

如果分配成功,则返回指向被分配内存的指针;否则返回空指针 NULL。注意,当内存不再使⽤时,要⽤ free() 函数释放内存块。

(2)calloc()函数。

函数原型为:

cpp 复制代码
void *calloc(unsigned n,unsigned size);

该函数的功能是在内存的动态区存储中分配 n 个长度为 size 的内存块。

如果分配成功,则返回指向被分配内存的指针;否则返回空指针 NULL。同样,当内存不再使⽤时,要⽤ free() 函数释放内存块。

同时,⽤ calloc() 函数可以为⼀维数组开辟动态存储空间,n 为数组元素个数,每个元素长度为 size。

(3) realloc()函数。

函数原型为:

cpp 复制代码
void *realloe(void *mem_address,unsigned int newsize);

该函数的功能是改变 mem_ address 所指内存区域的⼤⼩为 newsize 长度。 如果重新分配内存成功,则返回指向被分配内存的指针;否则返回空指针 NULL。 当内存不再使⽤时,要应⽤ free() 函数将内存空间释放。

(4) free() 函数。

函数原型为:

cpp 复制代码
void * free(void *p);

在 malloc() 函数、calloc() 函数和 realloc() 函数中均提到在不使⽤内存空间时要应⽤此函数释放内存空间,因此该函数的功能就是释放指针 p 所指向的内存空间。如果 p 为 NULL 或者指向不存在的内存块,则不做任何操作。

三、总结

注意,free( )函数所释放的内存空间⼀定要是 malloc( )函数、calloc( )函数或者 realloc( ) 函数所分配的内存。

相关推荐
电子硬件笔记1 分钟前
Python语言编程导论第七章 数据结构
开发语言·数据结构·python
南棱笑笑生17 分钟前
20251217给飞凌OK3588-C开发板适配Rockchip原厂的Buildroot【linux-5.10】后调通ov5645【只能预览】
linux·c语言·开发语言·rockchip
ulias21218 分钟前
C++ 的容器适配器——从stack/queue看
开发语言·c++
Amewin41 分钟前
window 11 安装pyenv-win管理不同的版本的python
开发语言·python
lionliu051944 分钟前
WebAssembly (Wasm)
java·开发语言·wasm
咸鱼加辣1 小时前
【java面试题】springboot的生命周期
java·开发语言·spring boot
weixin_462446231 小时前
用 Go 快速搭建一个 Coze (扣子)API 流式回复模拟接口(Mock Server)
开发语言·golang·状态模式
小鸡吃米…1 小时前
Python编程语言面试问题二
开发语言·python·面试
谁动了我的代码?2 小时前
QT<34> 利用线程池处理耗时任务以及回调函数的使用
开发语言·qt
柒.梧.2 小时前
数据结构:二叉排序树构建与遍历的解析与代码实现
java·开发语言·数据结构