027. 使用动态内存分配
027. 使用动态内存分配
在C语言中,动态内存分配允许程序在运行时请求和释放内存。这与静态内存分配(在编译时分配)不同,动态内存分配提供了更大的灵活性,尤其是在处理不确定大小的数据结构(如数组、链表等)时。C语言提供了几个标准库函数来管理动态内存分配,主要包括malloc
、calloc
、realloc
和free
。
1. malloc
函数
malloc
用于分配指定大小的内存块。分配的内存未初始化,其内容是未定义的。
函数原型
void *malloc(size_t size);
-
size
:要分配的字节数。 -
返回值:成功时返回指向分配的内存的指针,失败时返回
NULL
。
示例1:使用malloc
分配内存
#include <stdio.h>
#include <stdlib.h>
int main() {
int *ptr = (int *)malloc(5 * sizeof(int)); // 分配5个整数的内存
if (ptr == NULL) {
printf("Memory allocation failed\n");
return 1;
}
// 初始化并打印数组
for (int i = 0; i < 5; i++) {
ptr[i] = i + 1;
printf("%d ", ptr[i]);
}
printf("\n");
// 释放内存
free(ptr);
printf("Memory freed\n");
return 0;