west_winner 2017-01-10 01:44 采纳率: 0%
浏览 3648

c++ vector 存储指针问题

    vector<int*> v;
    for (int i = 0; i < 5; i++)
    {
        int a = i;
        v.push_back(&a);
    }
如上代码,循环完结后,vector内存储的5个值都是4,每次改变a的值都会改变已经压入的v中的值,说明每次执行“int a = i”时都没有申请新内存,可是不是应该申请新的内存吗?菜鸟之见,求大神解答。
  • 写回答

4条回答 默认 最新

  • voidar 2017-01-10 02:32
    关注
    在你的这段代码中,vector在执行pushi_back函数时,系统在内存申请一段空间(sizeof(int *))用于存储int指针的地址;
        vector添加一个子元素,子元素本身就是一个指针,指向刚才申请的那段内存空间;
        vector内存储的5个值都是4,说明每个子元素指向的内存空间中存储的int指针地址数一样,是因为变量a在执行完一个循环后销毁,然后再执行下次循环的时候,再次申请变量a时,系统在栈上又将之前a的存储地址又分配给了现在定义的变量a;
    
    评论

报告相同问题?

悬赏问题

  • ¥15 Stata 面板数据模型选择
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用