别让指针“野”起来否则你的程序会“疯”起来什么是野指针野指针就是指向非法内存地址的指针。它不像NULL指针空指针那么“老实”野指针乱指一通你不知道它指向哪里更不知道那里有什么。简单说野指针 失控的指针 程序的不定时炸弹。野指针是怎么“诞生”的1. 指针未初始化int *p; // 没赋值p里存的是垃圾值 *p 10; // 危险把10写到了未知地址2. 访问已释放的内存int *p (int*)malloc(sizeof(int)); free(p); // 释放后p仍指向原地址 *p 20; // 危险那块内存已经还给系统了3. 返回局部变量的地址int* func() { int a 10; return a; // 危险a在函数结束后就销毁了 }4. 数组越界int arr[5]; int *p arr 10; // 越界指向未知区域野指针有什么危害程序崩溃段错误—— 最常见数据被篡改—— 悄悄改掉别的变量让你查错查到怀疑人生难以复现的偶发bug—— 换个环境就不崩上线就崩一句话野指针的bug调试半小时定位两行泪。如何“驯服”野指针习惯做法初始化定义时赋值int *p NULL;释放后置空free(p); p NULL;不返回局部变量地址用static或动态分配检查边界数组别越界循环别超限使用前判空if (p ! NULL) { ... }好习惯示例int *p NULL; // 初始化为NULL p (int*)malloc(100); if (p ! NULL) { // 使用p } free(p); p NULL; // 释放后置空总结记住这三句1.野指针不可怕可怕的是你不知道它野在哪。2.凡是指针先想清楚它指向谁用完立刻让它指向NULL。3.写代码时多一份谨慎调试时少一晚通宵。如果你觉得有帮助欢迎点赞、收藏、评论让更多人看到
C语言野指针:从入门到“入土”避坑指南
发布时间:2026/7/16 3:04:55
别让指针“野”起来否则你的程序会“疯”起来什么是野指针野指针就是指向非法内存地址的指针。它不像NULL指针空指针那么“老实”野指针乱指一通你不知道它指向哪里更不知道那里有什么。简单说野指针 失控的指针 程序的不定时炸弹。野指针是怎么“诞生”的1. 指针未初始化int *p; // 没赋值p里存的是垃圾值 *p 10; // 危险把10写到了未知地址2. 访问已释放的内存int *p (int*)malloc(sizeof(int)); free(p); // 释放后p仍指向原地址 *p 20; // 危险那块内存已经还给系统了3. 返回局部变量的地址int* func() { int a 10; return a; // 危险a在函数结束后就销毁了 }4. 数组越界int arr[5]; int *p arr 10; // 越界指向未知区域野指针有什么危害程序崩溃段错误—— 最常见数据被篡改—— 悄悄改掉别的变量让你查错查到怀疑人生难以复现的偶发bug—— 换个环境就不崩上线就崩一句话野指针的bug调试半小时定位两行泪。如何“驯服”野指针习惯做法初始化定义时赋值int *p NULL;释放后置空free(p); p NULL;不返回局部变量地址用static或动态分配检查边界数组别越界循环别超限使用前判空if (p ! NULL) { ... }好习惯示例int *p NULL; // 初始化为NULL p (int*)malloc(100); if (p ! NULL) { // 使用p } free(p); p NULL; // 释放后置空总结记住这三句1.野指针不可怕可怕的是你不知道它野在哪。2.凡是指针先想清楚它指向谁用完立刻让它指向NULL。3.写代码时多一份谨慎调试时少一晚通宵。如果你觉得有帮助欢迎点赞、收藏、评论让更多人看到