瞲_大河弯弯 2021-10-14 19:32 采纳率: 0%
浏览 30

C++函数返回局部变量地址,我发现使用vs的release模式则指针位置不变,请问为什么?

在debug模式下:

img

发现第二个cout时*p指向的位置发生了随机的变化,但是在release模式下:

img


却都输出的是10,请问为什么?

#include <iostream>

using namespace std;

int* func()
{
    int a = 10;
    return &a;
}


int main()
{
    int *p = func();
    cout << *p << endl;
    cout << *p << endl;
    cout << *p << endl;
    cout << *p << endl;
    cout << *p << endl;
    cout << *p << endl;
    cout << *p << endl;
    cout << *p << endl;
    system("pause");



    return 0;
}

  • 写回答

1条回答 默认 最新

  • 关注

    func返回了一个固定的数值,后面你没有改变p的指向,所以输出一直不变啊
    p里面只是存了个地址,你不改变他他不会自己变的

    评论

报告相同问题?

问题事件

  • 创建了问题 10月14日

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表