深入理解C语言 - 指针使用的常见错误

本文详细介绍了C语言中指针使用时常见的五个错误:未初始化的指针可能导致内存覆盖,未释放内存造成内存泄漏,不断修改内存指针导致内存失控,野指针带来的安全隐患,以及指针参数申请内存的错误方式。通过实例分析,解释了这些错误的成因和后果,并提供了正确的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在C语言中,指针的重要性不言而喻,但在很多时候指针又被认为是一把双刃剑。一方面,指针是构建数据结构和操作内存的精确而高效的工具。另一方面,它们又很容易误用,从而产生不可预知的软件bug。下面总结一下指针使用的常见错误。


一、使用未初始化的指针

这个错误很常见,指针未初始化时,系统会给指针分配个随机地址,示例如下:

int *p; //或者 int *p = NULL;
···
*p = 10; //错误,指针未初始化

上述程序将值10写到未知的内存位置,如果p指向系统内存空间,这样很可能把系统本来地址里的内容给覆盖了,会导致程序或者系统的崩溃。


二、没有释放内存

在堆中开辟内存以后,使用完成必须释放内存,否则会造成内存泄漏,示例如下:

int *p = (int *)malloc(100);
···
free(p);
p = NULL;


三、不断修改内存指针变量

很多时候使用指针开辟了内存空间,然后如果对指针指向进行改变操作,操作完成后直接释放内存,会释放了不该释放的位置;另外程序丢失了对已开辟内存空间的控制,造成内存泄漏,示例如下:

//这种时候一般会定义两个指向同一个开辟的内存空间的指针变量,一个用于操作,一个用于释放,避免造成内存泄漏
char *p = (char *)malloc(100);
strcpy(p, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值