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

相关推荐
OxYGC1 天前
[玩转GoLang] 5分钟整合Gin / Gorm框架入门
开发语言·golang·gin
锐策1 天前
Lua 核心知识点详解
开发语言·lua
水饺编程1 天前
Windows 命令行:cd 命令3,当前目录,父目录,根目录
c语言·c++·windows·visual studio
kyle~1 天前
C/C++---动态内存管理(new delete)
c语言·开发语言·c++
落日沉溺于海1 天前
React From表单使用Formik和yup进行校验
开发语言·前端·javascript
Yuki’1 天前
网络编程---UDP
c语言·网络·网络协议·udp
鲸屿1951 天前
python之socket网络编程
开发语言·网络·python
没有梦想的咸鱼185-1037-16631 天前
基于R语言机器学习方法在生态经济学领域中的实践技术应用
开发语言·机器学习·数据分析·r语言
.YM.Z1 天前
C语言——文件操作
c语言·文件操作
向上的车轮1 天前
基于go语言的云原生TodoList Demo 项目,验证云原生核心特性
开发语言·云原生·golang