# C语言malloc和free函数

## malloc 使用

```c
#include <stdio.h>
#include <stdlib.h>

int main()
{
  int *p = NULL;
  p = malloc(sizeof(int));   // 申请空间 返回类型 void *

  if(p == NULL)
  {
    printf("malloc error! \n");
    exit(1);
  }
  *p = 10;  // 在空间存值
  printf("%d\n",*p);

  free(p);   // 释放内存

  exit(0);
}
```

![](/C%E8%AF%AD%E8%A8%80malloc%E5%92%8Cfree%E5%87%BD%E6%95%B0/a/image-1705551726562.png)

```c
#include <stdio.h>
#include <stdlib.h>

int main() {
  int *p;
  int num = 5;
  int i;

  p = malloc(sizeof(int) * num);

  for (i = 0; i < num; i++)
    scanf("%d", &p[i]);

  for (i = 0; i < num; i++)
    printf("%d ", p[i]);

  printf("\n");

  exit(0);
}
```

![](/C%E8%AF%AD%E8%A8%80malloc%E5%92%8Cfree%E5%87%BD%E6%95%B0/a/image-1705551914265.png)
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9