在几乎所有的情况下, C 语言都可以自动的来分配内存,这不需要你的参与。这很高效,也很安全。这也是目前主流语言所采取的策略。但是 C 语言除了系统自动分配和回收内存,还可以自己手动来分配和回收内存,让你的程序更具有灵活性。
1. 动态分配内存
int *x;
x = (int *)maclloc(32);
maclloc
函数的参数是分配的内存的大小,这个值我们也可以根据不同变量类型通过 sizeof
这个函数来获得。其返回值是一个无类型的指针。所以这里我们用了显示的类型转换,将其转换与指针变量类型相同的指针。
2. 回收动态分配的内存
回收动态分配的内存需要传入指针变量即可。
free(x);
这样就释放了我们之前动态分配的内存空间。
3. 示例程序
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *x;
printf("x value: %p, x address: %p, *x value: %d\n", x, &x, *x);
x = (int *)malloc(sizeof(x));
printf("x