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 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘