告别内存漏!教你轻松掌握C语言内存释放技巧
内存区域 | 描述 | 相关函数 |
---|---|---|
栈区(Stack) | 用于存储部变量,函数参数等,由译器自动管理。 | 自动分配和释放,无需手动作。 |
堆区(Heap) | 用于动态分配内存,需要手动申请和释放。 |
|
全区(静态区) | 存储全变量和静态变量,译时分配,程序结束时释放。 | 自动管理,无需手动作。 |
代码区 | 存储程序的机器代码,译时分配,程序结束时释放。 | 自动管理,无需手动作。 |
文字常量区 | 存储常量字符串,译时分配,程序结束时释放。 | 自动管理,无需手动作。 |
以下是一个使用malloc和free的示例代码:
include <stdio.h> include <stdlib.h>
int main() { int array = (int)malloc(5 sizeof(int)); if (array == NULL) { fprintf(stderr, "Memory allocation failed\n"); return 1; }
// 使用分配的内存 for (int i = 0; i < 5; i++) { array[i] = i 10; }
// 印数组 for (int i = 0; i < 5; i++) { printf("%d ", array[i]); } printf("\n");
// 释放分配的内存 free(array);
return 0; }