C语言内存安全 #
一、常见内存错误 #
1.1 缓冲区溢出 #
c
char buf[10];
strcpy(buf, "This is a very long string");
1.2 野指针 #
c
int* p;
*p = 10;
1.3 悬空指针 #
c
int* p = (int*)malloc(sizeof(int));
free(p);
*p = 10;
1.4 越界访问 #
c
int arr[5];
arr[10] = 100;
二、防范措施 #
2.1 使用安全函数 #
c
strncpy(dest, src, sizeof(dest) - 1);
dest[sizeof(dest) - 1] = '\0';
2.2 初始化指针 #
c
int* p = NULL;
2.3 边界检查 #
c
if (index >= 0 && index < size) {
arr[index] = value;
}
2.4 使用工具 #
- 编译器警告
- 静态分析
- 动态检测
三、总结 #
| 错误类型 | 防范措施 |
|---|---|
| 缓冲区溢出 | 使用安全函数 |
| 野指针 | 初始化为NULL |
| 悬空指针 | free后置NULL |
| 越界访问 | 边界检查 |
下一步,让我们学习文件操作!
最后更新:2026-03-26