动态内存分配是指在程序运行时根据需要,动态地分配和释放内存空间。C语言提供了两个常用的函数 `malloc` 和 `free` 来进行动态内存管理。下面是关于动态内存分配的详细说明:
1. `malloc` 函数:
`malloc` 函数用于在堆(Heap)中分配一块指定大小的内存空间,并返回一个指向该内存块起始地址的指针。它的声明如下:
```
void *malloc(size_t size);
```
参数 `size` 指定要分配的内存空间的大小(以字节为单位)。函数返回一个 `void` 类型的指针,需要进行强制类型转换后才能赋值给其他类型的指针。
示例代码:
```
int *ptr = (int *)malloc(5 * sizeof(int));
```
在上述示例中,使用 `malloc` 函数动态分配了一块能存储 5 个整型数据的内存空间,并将起始地址赋值给 `ptr` 指针。
2. `free` 函数:
`free` 函数用于释放之前通过 `malloc` 函数分配的内存空间,使其可供其他程序使用。它的声明如下:
```
void free(void *ptr);
```
参数 `ptr` 是之前通过 `malloc` 函数返回的指针,指向