C 语言提供了两个函数用于分配和释放内存 malloc 和 free,需要引用头文件 。 是 C 标准库头文件 为 C 语言程序员提供可靠、高效的函数,以实现动态内存分配、数据类型转换、伪随机数生成、过程控制、搜索和排序、数学以及多字节或宽字符函数,还包括一些常用常数,目的是促进组织和平台间的代码标准化。
#include <stdlib.h>
#include <stdio.h>
int main()
{
int *ptr = malloc(sizeof(int));
*ptr = 100;
printf("%d", *ptr);
free(ptr);
return 0;
}
复制代码
输出:
100
复制代码
调用 malloc 会分配一块内存空间,并将这块内存空间的首地址返回。调用时,需要传入目标内存空间的大小,单位按照字节(Byte)算,而返回的地址数据类型是 void*,所以,根据目标空间的具体用途转换即可。
这块内存空间在分配之后还属于未初始化的状态,如果对内存空间的使用比较复杂,建议先用 memset 初始化一下。
内存空间使用完,需要使用 free 释放掉,避免闲置浪费,否则就算是内存泄漏了。内存泄露会直到程序进程结束为止。
在其它的高级语言里,比如 Java、Python 等,出于内存安全的考虑,都不会允许用户自己管理内存,而 C++ 是个例外,这可能来自于 C 语言的传承。
C++ 里同样提供了 malloc 和 free,但是引用的头文件变成了 。 是 增强版,而且所有内容都在命名空间内声明,所以使用前必须通过命名空间引用。
另外 C++ 还提供了两个额外的操作符用于分配和释放内存,分别是 new 和 delete。
[code]#include using namespace std;int main(){ int *ptr = new int; *ptr = 100; cout