动态内存管理是在程序运行时,根据需要动态分配内存空间,并在不需要时释放这些空间的过程。在C语言中,我们可以使用malloc()函数来动态分配内存空间,使用free()函数来释放已分配的内存空间。

内存泄漏是指在动态分配内存空间后,没有释放这些空间,导致系统中存在一些无法访问的内存块,从而浪费系统资源。内存泄漏会导致程序运行速度变慢,甚至最终导致程序崩溃。

下面是一个简单的示例,演示了如何使用malloc()函数动态分配内存空间,以及如何使用free()函数释放内存空间:

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

int main() {
    // 动态分配一个整型数组
    int *arr = (int*)malloc(5 * sizeof(int));
    
    if (arr == NULL) {
        printf("内存分配失败\n");
        return 1;
    }
    
    // 给数组赋值
    for (int i = 0; i < 5; i++) {
        arr[i] = i;
    }
    
    // 打印数组元素
    for (int i = 0; i < 5; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
    
    // 释放内存空间
    free(arr);
    
    return 0;
}

在上面的示例中,我们首先使用malloc()函数动态分配了一个包含5个整型元素的数组。然后给数组赋值并打印数组元素。最后使用free()函数释放了该数组的内存空间。

需要注意的是,每次调用malloc()函数分配内存空间后,都需要在程序结束前使用free()函数释放这些空间,防止内存泄漏的发生。

总结一下,动态内存管理是C语言中非常重要的一个知识点,对于避免内存泄漏和提高程序性能具有重要意义。在编程过程中,我们应该注意及时释放不再需要的内存空间,避免内存泄漏的发生。