【说站】c语言野指针产生的原因
语言 原因 指针 产生
2023-06-13 09:13:21 时间
c语言野指针产生的原因
1、指针变量未初始化,任何指针变量刚被创建时不会自动成为 NULL 指针,它的缺省值是随机的。
所以,指针变量在创建的同时应当被初始化,要么将指针设置为 NULL ,要么让它指向合法的内存。
#include <stdio.h>
void Swap(int *p1,int *p2)
{
int *tmp;
*tmp=*p1;
*p1=*p2;
*p2=*tmp;//*p1指向了无效地址,程序会给出警告,使用了未初始化的局部变量tmp,*tmp的值无法被访问,因为tmp未初始化,它的地址是个随机值(0xcccccccc)
}
如果没有初始化,编译器会报错‘point’ may be uninitializedin the function。
2、指针释放后之后未置空。
指针在 free 或 delete 后未赋值 NULL ,它们只是把指针所指的内存给释放掉,但并没有处理指针本身。此时指针指向不可知的(随机的、不正确的、没有明确限制的)。
释放后的指针应立即将指针置为NULL,防止产生野指针。
int main()
{
char *p;
p=(char*)malloc(10);
printf("%s\n",p);
if(p!=NULL)
{
free(p);
}
free(p);//再次释放p时,因为前面已经被释放了一次,再次释放会报错
return 0;
}
以上就是c语言野指针产生的原因,希望对大家有所帮助。更多C语言学习指路:C语言教程
本教程操作环境:windows7系统、C11版,DELL G3电脑。
相关文章
- R语言之机器学习第一讲(mlr3包系列)
- VSCode设置中文语言显示
- 【c语言】小程序游戏——飞机游戏(一)
- 分治法大整数乘法c语言,大整数乘法(分治法)「建议收藏」
- C语言结构体用法_c语言中的struct用法
- 【说站】c语言中fclose函数的使用
- Golang语言情怀--第99期 区块链技术-以太坊公链合约部署-第5节:部署合约到以太坊公链
- R语言广义相加模型 (GAMs)分析预测CO2时间序列数据|附代码数据
- [Nature Communications | 论文简读] 由多序列比对训练的蛋白质语言模型学习系统发育关系
- R语言建立和可视化混合效应模型mixed effect model|附代码数据
- 【C 语言】文件操作 ( 按照单个字符的方式读写文件 | fgetc 函数 | fputc 函数 )
- NLP语言模型详解程序员
- Go语言之旅[三]详解大数据
- 学习 Linux 编程——谭开心入门语言(linux编程语言)
- Go语言网络爬虫分析器接口
- 数据库学习C语言 打造Oracle数据库(c语言oracle)
- Linux下编辑C语言实战指南(linux怎么编辑c语言)
- 探索Linux系统下的当前语言设定.(查看linux当前语言)
- SpaceVim – 开箱即用的Vim-IDE,用户仅需载入相关语言的模块即可得到一个开箱即用的Vim-IDE。
- Linux之下编写C语言程序的试验记(linux c语言试题)
- sqlserver2008安装报语言不符的解决方法
- c语言的cps实现求fibonacci数列示例