动态内存分配:原理、错误处理与应用实例
1. 使用动态分配的内存
动态内存分配允许程序在运行时获取所需的内存空间,这在处理大小未知的数组或数据结构时非常有用。下面是一个使用 malloc
函数获取内存的示例:
int *pi;
...
pi = malloc(100);
if (pi == NULL) {
printf("Out of memory!\n");
exit(1);
}
在这个示例中, malloc
函数尝试分配 100 字节的内存,并返回一个指向该内存块的指针。如果分配失败, malloc
将返回 NULL
,因此需要检查返回值以确保内存分配成功。
1.1 更优的内存分配方式
如果需要为 25 个整数分配内存,更好的做法是使用 sizeof
运算符:
pi = malloc(25 * sizeof(int));
这种方法具有更好的可移植性,因为它不依赖于特定机器上整数的大小。
1.2 访问动态分配的内存
一旦获得了指向动态分配内存的指针,就可以使用间接引用和指针算术来访问内存中的不同位置。以下是两种将新分配数组的每个元素设置为零的方法:
// 使用指针算术
int *p