【C语言核心】动态内存管理完全指南
一、内存管理函数规范详解
1. 四大核心函数对比
void* malloc(size_t size);
void* calloc(size_t num, size_t size);
void* realloc(void* ptr, size_t new_size);
void free(void* ptr);
#define SAFE_MALLOC(p, type, n) \
do {
\
(p) = (type*)malloc((n) * sizeof(type)); \
if (!(p)) {
\
fprintf(stderr, "内存分配失败: %s:%d", __FILE__, __LINE__); \
exit(EXIT_FAILURE); \
} \
} while(0)
int* create_int_array(size_t len) {
int* arr = calloc(len, sizeof(int));
if (!arr) {
perror("数组创建失败");
return NULL;
}
return arr;
}
2. realloc深度解析
int* safe_realloc(int** ptr, size_t new_len) {
int* new_ptr = realloc(*ptr, new_len * sizeof(int));
if (!new_ptr) {
free(*ptr);
*ptr = NULL;
return -1;
}
*ptr = new_ptr;
return 0;
}
二、内存泄漏防御体系
1. 资源追踪技术
#ifdef DEBUG
#define MEM_TRACK_MAX 1024