栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

函数指针的三个常见错误,给我记住喽~!

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

函数指针的三个常见错误,给我记住喽~!

int *f1(void) 
{
    int x =10;
    return (&x);    // 函数内的变量退出后会释放
}   
int *f2(void) 
{
   int *ptr;
   *ptr = 10;       // 指针指向常量
   return ptr;      // 函数内的常量指针也不要返回
}
int *f3(void) 
{
   int *ptr;
   ptr = (int *)malloc(sizeof(int)); // 分配的内存记得取消就可以了
   return ptr; 
} 

f1显然有问题,它返回一个局部变量的指针,局部变量是保存在stack中的,退出函数后,局部变量就销毁了,保留其指针没有意义,因为其指向的stack空间可能被其他变量覆盖了。

f2也有问题, ptr是局部变量,未初始化,它的值是未知的,*ptr不知道指向哪里了,直接给*ptr赋值可能会覆盖重要的系统变量,这就是通常说的野指针的一种。

malloc后一定要free释放,实际工作中用的多。

真要说影响最大的,还要属第三个。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/317458.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号