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