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

相关推荐
yutian06066 分钟前
C# TextBox 控件限制输入字符为十六进制字符串
开发语言·c#
猛犸MAMMOTH12 分钟前
Python打卡第51天
开发语言·python·深度学习
小安同学iter16 分钟前
JUC并发编程(四)常见模式
java·开发语言
海风极客41 分钟前
《Go小技巧&易错点100例》第三十五篇
开发语言·后端·golang
YuTaoShao1 小时前
Java八股文——Spring「SpringMVC 篇」
java·开发语言·spring
程序员JerrySUN1 小时前
Linux 内存管理实战精讲:核心原理与面试常考点全解析
linux·运维·开发语言·嵌入式硬件·架构
CodeWithMe1 小时前
【C/C++】long long 类型传参推荐方式
c语言·开发语言·c++
ch_s_t1 小时前
Babylon.js引擎(二)
开发语言·javascript·ecmascript
Shaun_青璇2 小时前
CPP基础(2)
开发语言·c++·算法
景天科技苑2 小时前
【Rust UDP编程】rust udp编程方法解析与应用实战
开发语言·rust·udp·udp编程·rust udp