分配内存malloc()和free()

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分配内存malloc()和free()相关的知识,希望对你有一定的参考价值。

1、首先回顾一下内存分配的有关事实。所有的程序都必须留出足够内存来存储他们使用的数据。一些内存分配是自动完成的。如:

float x;

char place[]="dancing oxen creek".

于是系统将留出存储float或者字符串足够的内存空间,也可明确要求确切的内存,int a[100];这一声明留出100个内存位置。每个位置可存储一个int值。c的功能远非如此。可以在程序运行时分配更多的内存。主要工具函数就是malloc(),参数:所需字节数。然后malloc()找到可用内存中一个大小适合的块。内存是匿名的,也就是说malloc()分配了内存,但没有为他指定名字。然而它却可以返回那块内存第一个字节的地址。因此,可以把该地址赋值给一个指针变量,并使用该指针来访问那块内存。malloc()函数可用来返回数组指针、结构指针等等。我们使用malloc()来创建一个数组,可以在程序运行时使用malloc()请求一个存储块,另外还需要一个指针来存放该块在内存中的位置。

double * ptd;

ptd=(double*)malloc(30 * sizeof(double));请求30个double类型的空间,把ptd指向该空间的位置。一般来说,对于每个malloc()函数调用,应该调用一次free(),free()的参数是malloc()返回的地址,它释放先前分配的内存。

以上是关于分配内存malloc()和free()的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 malloc 和 free 进行动态内存分配

使用malloc和free函数进行内存动态分配

malloc和free的实现

malloc和free,brk和sbrk和mmap和munmap的使用和关系以及内存分配的原理

stm32网联丢包跟内存分配有关吗

动态内存分配