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

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.dtcms.com/a/211113.html

相关文章:

  • 如何提高自己的实际操作技能以通过客运从业资格考试?
  • Python实现对大批量Word文档进行自动添加页码(16)
  • 一张纸决定的高度
  • DAY01:【ML 第二弹】高等数学
  • 初学c语言20(动态内存管理)
  • SYN Flood攻击:原理、危害与防御指南
  • 产品迭代与放弃的判断:MVP、PMF 与 Scale Fit 的三重验证
  • 开发者工具箱-鸿蒙金额转换开发笔记
  • (泛函分析)范数和收敛
  • LangChain
  • 讲述我的PLC自学之路 第九章
  • WHAT - 兆比特每秒 vs 兆字节每秒
  • 品鉴JS的魅力之防抖与节流【JS】
  • 2025年—ComfyUI_最新插件推荐及使用(实时更新)
  • 2942. 查找包含给定字符的单词
  • 【AI News | 20250523】每日AI进展
  • 文件夹图像批处理教程
  • NLP学习路线图(六):数据处理与可视化
  • Vue框架1(vue搭建方式1,vue指令,vue实例生命周期)
  • Symbol、Set 与 Map:新数据结构探秘
  • 关于gt的gt_data_valid_in信号
  • RV1126+FFMPEG多路码流监控项目大体讲解
  • 实现tdx-hs300-mcp
  • uni-app学习笔记十--vu3综合练习
  • 深入了解linux系统—— 操作系统的路径缓冲与链接机制
  • DeepONet深度解析:原理、架构与实现
  • 判断C表达式是否成立
  • 函数式编程思想详解
  • SQL每日一题(4)
  • 【动态规划】简单多状态(二)