以下是这些函数的简要说明:
1. malloc 函数
#include <stdlib.h>
void *malloc(size_t size);
malloc 函数用于分配指定大小的内存块,并返回一个指向该内存块的指针。如果分配成功,返回的指针是未初始化的;如果分配失败,返回 NULL。
int *arr = (int *)malloc(5 * sizeof(int));
if (arr != NULL) {
// 分配成功,使用 arr
// ...
free(arr); // 释放内存
} else {
// 分配失败
// 处理错误
}
2. calloc 函数
#include <stdlib.h>
void *calloc(size_t num_elements, size_t element_size);
calloc 用于分配指定数量和大小的连续内存块,返回一个指向该内存块的指针。与 malloc 不同,calloc 分配的内存块被初始化为零。
int *arr = (int *)calloc(5, sizeof(int));
if (arr != NULL) {
// 分配成功,使用 arr
// ...
free(arr); // 释放内存
} else {
// 分配失败
// 处理错误
}
3. realloc 函数
#include <stdlib.h>
void *realloc(void *ptr, size_t new_size);
realloc 函数用于修改之前分配的内存块的大小。它接受一个指向之前分配的内存块的指针和新的大小,并返回一个指向重新分配后的内存块的指针。如果重新分配失败,返回 NULL。
int *arr = (int *)malloc(5 * sizeof(int));
if (arr != NULL) {
// 分配成功,使用 arr
// ...
int *new_arr = (int *)realloc(arr, 10 * sizeof(int));
if (new_arr != NULL) {
// 重新分配成功,使用 new_arr
// ...
free(new_arr); // 释放内存
} else {
// 重新分配失败
// 处理错误
free(arr); // 释放原始内存
}
} else {
// 分配失败
// 处理错误
}
4. free 函数
#include <stdlib.h>
void free(void *ptr);
free 函数用于释放之前通过 malloc、calloc 或 realloc 分配的内存块。使用 free 后,指针 ptr 不再指向有效的内存。
int *arr = (int *)malloc(5 * sizeof(int));
if (arr != NULL) {
// 分配成功,使用 arr
// ...
free(arr); // 释放内存
} else {
// 分配失败
// 处理错误
}
注意:在使用动态分配的内存时,及时释放内存是很重要的,以避免内存泄漏。在释放内存后,确保将指针设置为 NULL,以防止悬挂指针问题。
转载请注明出处:http://www.zyzy.cn/article/detail/13539/C 语言