网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
12月29日漏签0天
c++吧 关注:647,878贴子:2,117,517
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 10回复贴,共1页
<<返回c++吧
>0< 加载中...

函数不能返回局部临时变量的地址

  • 只看楼主
  • 收藏

  • 回复
  • 阿蒙887
  • =
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
问各位兄弟一个问题,函数不能返回局部临时变量的地址,因为函数调用结束后这个临时变量的地址就无效了。若后续继续对其作修改会出问题。
今天在网站看关于链表的生成。该网站这么写的:
========================
//声明节点结构
typedef struct Link{
int elem;//存储整形元素
struct Link *next;//指向直接后继元素的指针
}link;
//创建链表的函数
link * initLink(){
link * p=(link*)malloc(sizeof(link));//创建一个头结点
link * temp=p;//声明一个指针指向头结点,用于遍历链表
//生成链表
for (int i=1; i<5; i++) {
//创建节点并初始化
link *a=(link*)malloc(sizeof(link));
a->elem=i;
a->next=NULL;
//建立新节点与直接前驱节点的逻辑关系
temp->next=a;
temp=temp->next;
}
return p;
}
========================
这样p不是初始化函数内部的局部指针变量么?
还有a不是在循环体内申请的临时变量吗?离开链表的初始化函数后,地址不就无效了。。


  • wwww9
  • &
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
又不是写的return &p 有什么问题


2025-12-29 18:24:59
广告
不感兴趣
开通SVIP免广告
  • 射命丸文
  • ^
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
a和p指向malloc的内存,这块内存又不是局部变量,当然有效,无效的是return &p,或者return &a,这样才是返回局部变量指针。


  • 495大吃货
  • ,
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
malloc索取的内存不会随函数的结束而释放
要配合free


  • zCytus
  • ||
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
p指向堆内存不会无效


  • 幻の上帝
  • ->*
    15
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
你看清你返回了什么再说。
真返回了不用又咋地。


  • a970332088
  • |
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
楼主你应该想问的是这些吧:
int* func(){
int value = 10;
int *p = &value;
return p; //这样返回是错误的,因为函数调用完value会被回收。返回指向malloc申请空间的指针是没问题的。
}


  • lily丷
  • ,
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
可函数可以返回局部变量地址,但是当函数调用完空间就会回收,变野了。


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 10回复贴,共1页
<<返回c++吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示