当前位置: 首页 > ops >正文

vector中reserve导致的析构函数问题

接上一节vector实现,解决杨辉三角问题时,我在最后调试的时候,发现return vv时,调用析构函数,到第四步时才析构含有14641的vector。我设置了一个全局变量i来记录。

初始为35:

 当为39时,也就是第四次:发现vv中的第五个,也就是含14641的vector与当前执行析构函数的this指针指向一样,也就是该vector在析构!

那么,按常理来说,应该时vector<vector>中最后的元素先析构,但现在为什么是第四个呢?其实是因为在reserve函数里,开辟了8个空间: 你看,初始为0,给了4个空间,而push_back第五个vector时要开辟空间,开辟二倍就是8个空间!在resrve中T* tmp=new T[n],开辟了8个空间,所以在最后析构函数时,是第四个被释放,也就是倒数第四个!

http://www.xdnf.cn/news/8639.html

相关文章:

  • MySQL主从同步原理
  • 大模型推理 memory bandwidth bound (4) - Speculative Decoding
  • 【Bluedroid】蓝牙HID Host virtual_unplug全流程源码解析
  • 【笔记】关于synchronized关键字的底层原理之我流理解(未完)
  • TReport组件指南总结
  • C++ 继承详解:基础篇(含代码示例)
  • 【算法】:动态规划--背包问题
  • Linux常用下载资源命令
  • OpenLayers 加载导航与基本操作控件
  • AD9268、AD9643调试过程中遇到的问题
  • Linux的读写屏障
  • Mysql 通过案例快速学习常见操作
  • 索引下探(Index Condition Pushdown,简称ICP)
  • 大模型介绍
  • 动态规划dp
  • Java中==和equals()的终极对比
  • SpikingYOLOX
  • GATT 服务的核心函数bt_gatt_discover的介绍
  • Day 34
  • Docker 镜像标签(Tag)规范与要求
  • 历史数据分析——宁波港
  • 防火墙流量管理-带宽管理
  • OpenLayers 加载图层探查控件
  • Linux系统移植①:uboot概念
  • 基于规则匹配实现企业政策精准匹配实战案例
  • 《Java vs Go:现代编程语言的核心差异与设计哲学对比》
  • nginx 基于IP和用户的访问
  • LangGraph的智能评估
  • 【深度学习新浪潮】什么是MCP?
  • LangGraph:部署智能应用