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( ) 函数所分配的内存。

相关推荐
小猪咪piggy13 分钟前
【数据结构】(12) 反射、枚举、lambda 表达式
java·开发语言·数据结构
web1478621072316 分钟前
数据库系统架构与DBMS功能探微:现代信息时代数据管理的关键
java·开发语言·数据库
嵌入式修炼师1 小时前
深入理解 QVectorQString:Qt 中动态数组的强大力量
开发语言·qt
浪子西科1 小时前
【数据结构】(Python)第六章:图
开发语言·数据结构·python
kongba0071 小时前
EIDE搭配cursor编译GD32的项目 需要的一些c_cpp_properties设置 json文件
c语言·开发语言·json
抹除不掉的轻狂丶1 小时前
JVM生产环境问题定位与解决实战(三):揭秘Java飞行记录器(JFR)的强大功能
java·开发语言·jvm
Hello.Reader2 小时前
Rust 中的引用循环与内存泄漏
开发语言·windows·rust
xianwu5432 小时前
反向代理模块kfj
开发语言·网络·数据库·c++·mysql
EPSDA2 小时前
网络基础知识
linux·运维·服务器·开发语言·c++
SomeB1oody2 小时前
【Rust中级教程】2.8. API设计原则之灵活性(flexible) Pt.4:显式析构函数的问题及3种解决方案
开发语言·后端·性能优化·rust