C语言内存分配的方式有两种:静态内存分配和动态内存分配。
静态内存分配:在程序编译时,编译器会为全局变量和静态局部变量分配固定的内存空间。这些变量在程序运行期间一直存在,直到程序结束。静态内存分配是自动进行的,不需要程序员手动管理。
动态内存分配:动态内存分配是在程序运行时根据需要动态地为变量分配内存空间。动态内存分配通常使用malloc、calloc、realloc和free等函数来管理。malloc函数用于分配指定字节数的内存空间,calloc函数用于分配指定数量和大小的连续内存空间,realloc函数用于重新分配已分配内存的大小,free函数用于释放已分配的内存空间。
动态内存分配适合于需要在程序运行过程中动态创建、释放和修改内存空间大小的情况,但需要程序员手动管理内存的分配和释放,否则可能会造成内存泄漏或者悬空指针等问题。