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

Qwen3.5生成的简化版vector存在野指针bug

今天用Qwen3.5生成了一份简化版vector代码#ifndef MY_VECTOR_H #define MY_VECTOR_H #include iostream #include algorithm // 用于 std::swap #include stdexcept // 用于 std::out_of_range template class T class My_vector { private: T* _start; // 指向数组的起始位置 T* _finish; // 指向最后一个有效元素的下一个位置 T* _end_of_storage; // 指向当前分配内存的末尾位置 public: // 迭代器vector的迭代器本质上就是原生指针 typedef T* iterator; typedef const T* const_iterator; // 默认构造 My_vector() : _start(nullptr), _finish(nullptr), _end_of_storage(nullptr) {} // 析构函数 ~My_vector() { delete[] _start; } // 获取元素个数 size_t size() const { return _finish - _start; } // 获取容量 size_t capacity() const { auto rtn _end_of_storage - _start; return rtn; } // 判空 bool empty() const { return _start _finish; } // 迭代器接口 iterator begin() { return _start; } iterator end() { return _finish; } // 下标访问 (带越界检查) T operator[](size_t pos) { if (pos size()) throw std::out_of_range(Index out of range); return _start[pos]; } const T operator[](size_t pos) const { if (pos size()) throw std::out_of_range(Index out of range); return _start[pos]; } // 扩容函数预留空间 void reserve(size_t n) { if (n capacity()) { size_t old_size size(); T* new_data new T[n]; // 1. 开辟新空间 // 2. 迁移旧数据如果有 if (_start) { for (size_t i 0; i old_size; i) { new_data[i] std::move(_start[i]); // 使用移动语义提升效率 } delete[] _start; // 3. 释放旧空间 } // 4. 更新指针 _start new_data; _finish _start old_size; _end_of_storage _start n; } } // 尾插元素 void push_back(const T val) { if (_finish _end_of_storage) { // 如果容量为0先给4个空间否则扩容为原来的2倍 auto rsv capacity() 0 ? 4 : capacity() * 2; reserve(rsv); } *_finish val; _finish; } // 尾删元素 void pop_back() { if (!empty()) { --_finish; } } // 拷贝构造深拷贝 My_vector(const My_vectorT v) { reserve(v.capacity()); for (size_t i 0; i v.size(); i) { _start[i] v._start[i]; } _finish _start v.size(); } // 赋值运算符重载现代写法利用拷贝构造和swap My_vectorT operator(My_vectorT v) { std::swap(_start, v._start); std::swap(_finish, v._finish); std::swap(_end_of_storage, v._end_of_storage); return *this; } }; #endif // MY_VECTOR_Hreserve()方法中若发生了内存重新分配则会释放_start指向的内存若_start非空。拷贝构造函数中没有为_start提供默认值nullptr这导致执行其中的reserve()时_start为野指针但试图释放该块内存导致崩溃。正确做法是为拷贝构造函数提供与默认构造函数相同的初始化列表。

相关文章:

Qwen3.5生成的简化版vector存在野指针bug

今天用Qwen3.5生成了一份简化版vector代码&#xff1a;#ifndef MY_VECTOR_H #define MY_VECTOR_H#include <iostream> #include <algorithm> // 用于 std::swap #include <stdexcept> // 用于 std::out_of_rangetemplate <class T> class My_vector { …...

高校学工平台采购避坑指南:招标选型的5个关键考量点

✅作者简介&#xff1a;合肥自友科技 &#x1f4cc;核心产品&#xff1a;智慧校园平台(包括教工管理、学工管理、教务管理、考务管理、后勤管理、德育管理、资产管理、公寓管理、实习管理、就业管理、离校管理、科研平台、档案管理、学生平台等26个子平台) 。公司所有人员均有多…...

为Nodejs应用快速集成稳定可靠的大模型api服务

为Nodejs应用快速集成稳定可靠的大模型API服务 1. 统一接入方案的技术选型 现代Node.js应用集成AI能力时&#xff0c;开发者常面临多模型供应商接入复杂、密钥管理分散等问题。Taotoken提供的OpenAI兼容API层可统一对接主流大模型&#xff0c;通过标准化接口降低接入成本。其…...

AI意识思想实验

意识是一种主观体验&#xff0c;他人无法完全确证&#xff0c;只能基于外在证据进行推断。当观察AI有意识现象的外在表现时&#xff0c;就可以认定为它有意识。“AI教父”杰弗里辛顿&#xff08;Geoffrey Hinton&#xff09;采用了一种独特且有力的方式&#xff0c;他借鉴了哲学…...

Unlock Music:浏览器内一键解锁加密音乐文件的终极指南 [特殊字符]

Unlock Music&#xff1a;浏览器内一键解锁加密音乐文件的终极指南 &#x1f3b5; 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库&#xff1a; 1. https://github.com/unlock-music/unlock-music &#xff1b;2. https://git.unlock-music.dev/um/web …...

5分钟学会particles.js:让网页动起来的终极粒子特效指南

5分钟学会particles.js&#xff1a;让网页动起来的终极粒子特效指南 【免费下载链接】particles.js A lightweight JavaScript library for creating particles 项目地址: https://gitcode.com/gh_mirrors/pa/particles.js 还在为静态网页缺乏活力而烦恼吗&#xff1f;想…...

暗黑破坏神2存档解析与编辑:基于Vue.js的现代化解决方案

暗黑破坏神2存档解析与编辑&#xff1a;基于Vue.js的现代化解决方案 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 你是否曾因暗黑破坏神2存档损坏而失去数小时的游戏进度&#xff1f;是否想要快速测试不同职业Build却苦于漫长…...

生活有品质,安全须随行:Ledger大陆官方授权购买指引

生活有品质&#xff0c;安全须随行&#xff1a;Ledger 大陆官方授权购买指引 【核心摘要】 在追求高品质数字生活的今天&#xff0c;资产的底层安全是行稳致远的基石。针对大中华区用户面临的 App Store 地区限制及复杂的网络连接环境&#xff0c;认准 Ledger 官方授权链路 是…...

别再死记硬背了!用一张图+实战配置,彻底搞懂华为VXLAN里的NVE、VTEP和VNI

华为VXLAN实战图解&#xff1a;从NVE到VTEP的配置记忆法 刚接触VXLAN时&#xff0c;那些缩略词就像天书——NVE、VTEP、VNI、BD...每个字母都认识&#xff0c;连起来就懵。直到我在华为CE6880交换机上输错三次命令被考官扣分后&#xff0c;才意识到死记硬背根本行不通。这张手…...

QueryExcel:3分钟搞定上百个Excel文件批量查询的终极解决方案

QueryExcel&#xff1a;3分钟搞定上百个Excel文件批量查询的终极解决方案 【免费下载链接】QueryExcel 多Excel文件内容查询工具。 项目地址: https://gitcode.com/gh_mirrors/qu/QueryExcel 还在为海量Excel文件中的数据查找而烦恼吗&#xff1f;面对分散在不同文件夹中…...

Qt实战:手把手教你定制QTabWidget的垂直标签页,让文字和图标都“正”过来

Qt实战&#xff1a;垂直标签页的文字与图标方向优化全解析 在桌面应用开发中&#xff0c;侧边导航栏的设计往往能显著提升用户体验。当使用Qt的QTabWidget实现这一功能时&#xff0c;开发者常会遇到一个棘手问题&#xff1a;将标签页(tabbar)置于左侧或右侧时&#xff0c;默认的…...

2026年阿里云部署OpenClaw/Hermes Agent详解+百炼token Plan速成全攻略教程

2026年阿里云部署OpenClaw/Hermes Agent详解百炼token Plan速成全攻略教程。 OpenClaw和Hermes Agent是什么&#xff1f;OpenClaw和Hermes Agent怎么部署&#xff1f;如何部署OpenClaw/Hermes Agent&#xff1f;2026年还在为部署OpenClaw和Hermes Agent到处找教程踩坑吗&#x…...

C盘空间不足?C盘爆满这样操作才干净 一招教你安全清理C盘

在日常使用电脑的过程中&#xff0c;相信很多人都遇到过这样的困扰&#xff1a;桌面弹出“C盘空间不足”的警告&#xff0c;电脑开机变慢、软件启动卡顿&#xff0c;甚至打开一个简单的文档都要加载半天&#xff0c;严重影响工作和娱乐效率。C盘作为Windows系统的默认安装盘&am…...

【小白易懂版】OpenClaw 飞书机器人绑定配置详细教程(含安装包)

OpenClaw 绑定飞书完整教程 OpenClaw 是一款 AI 聊天网关一键部署平台&#xff0c;支持对接多模型与多渠道接入。本文详细说明 Windows 端飞书机器人创建、权限配置、事件订阅及 OpenClaw 接入全流程。 一、前置准备 安装包下载&#xff1a;https://xiake.yun/api/download/…...

吊顶式空调机组怎么选?

一、吊顶式空调机组&#xff1a;节省空间的高效制冷制热设备吊顶式空调机组凭借节省空间、运行高效、适配性强的优势&#xff0c;广泛应用于办公室、商场、医院等各类场所。其采用吊顶安装设计&#xff0c;不占用地面空间&#xff0c;可灵活融入各类建筑布局&#xff0c;同时具…...

视觉分词技术:多语言混合与噪声鲁棒性的突破

1. 视觉分词技术概述文本分词作为自然语言处理的基础环节&#xff0c;其质量直接影响下游任务的性能。传统基于子词的分词方法&#xff08;如BPE、WordPiece&#xff09;通过统计学习将文本拆分为高频出现的子词单元&#xff0c;这种离散符号化的处理方式在标准文本场景表现良好…...

小米正式开源 MiMo 系列模型,顺手送100万亿Token

小米正式开源 MiMo 系列模型&#xff0c;顺手送100万亿TokenAI观察社 今天凌晨&#xff08;4月28日&#xff09;&#xff0c;小米悄悄开源了一个大模型。 不是手机系统&#xff0c;不是汽车&#xff0c;是大模型。 ────────────────两款模…...

题解:AcWing 6027 后缀表达式的值

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来&#xff0c;并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构&#xff0c;旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大…...

从技术路径看金融AI智能体规模化落地:三大风险与可靠架构选择

AI Agent&#xff08;智能体&#xff09;正成为金融业数字化转型过程中备受关注的新生产力&#xff0c;它不局限于简单问答&#xff0c;而是能够自主感知业务需求、制定行动计划、调用工具并完成跨系统任务的“数字伙伴”。从反洗钱智能甄别&#xff0c;到对公账户全流程备案&a…...

题解:AcWing 1047 糖果

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来&#xff0c;并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构&#xff0c;旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大…...

终极免费文档下载指南:kill-doc让你轻松获取百度文库等30+平台学习资源

终极免费文档下载指南&#xff1a;kill-doc让你轻松获取百度文库等30平台学习资源 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档&#xff0c;但是相关网站浏览体验不好各种广告&#xff0c;各种登录验证&#xff0c;需要很多步骤才能下载文档&#xff0c;…...

题解:AcWing 1046 橱窗布置

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来&#xff0c;并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构&#xff0c;旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大…...

HS2-HF_Patch:一站式解决《Honey Select 2》语言障碍和功能限制的终极增强补丁

HS2-HF_Patch&#xff1a;一站式解决《Honey Select 2》语言障碍和功能限制的终极增强补丁 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch 你是否曾因《Honey S…...

SpringBoot运行后,一会儿停止的问题

问题&#xff1a;在创建新的SpringBoot项目后&#xff0c;启动项目时&#xff0c;发现项目运行无报错&#xff0c;但是运行一会就停止了。作为服务器项目&#xff0c;正常的SpringBoot项目运行不会停止&#xff0c;应该一直运行下去。问题出现&#xff1a;问题原因&#xff1a;…...

从MSG_PEEK到错误处理:深入挖掘Linux网络编程中recvfrom/sendto的那些高级用法和坑

从MSG_PEEK到错误处理&#xff1a;深入挖掘Linux网络编程中recvfrom/sendto的那些高级用法和坑 在Linux网络编程的世界里&#xff0c;recvfrom和sendto这两个系统调用就像是一对默契十足的搭档&#xff0c;它们支撑起了无数基于UDP协议的网络应用。但当你真正深入到高性能网络服…...

别再复制粘贴了!手把手教你封装一个可复用的Vue2百度地图组件

从零构建高复用Vue2百度地图组件&#xff1a;工程化实践指南 每次新项目需要地图功能时&#xff0c;你是否还在重复复制粘贴那段熟悉的集成代码&#xff1f;当团队中不同成员各自实现的地图功能出现行为差异时&#xff0c;是否让项目维护变得棘手&#xff1f;本文将带你超越基础…...

在 Node.js 后端服务中集成 Taotoken 实现异步聊天补全调用

在 Node.js 后端服务中集成 Taotoken 实现异步聊天补全调用 1. 准备工作 在开始集成 Taotoken 之前&#xff0c;请确保已完成以下准备工作。首先登录 Taotoken 控制台&#xff0c;在「API 密钥」页面创建一个新的密钥并妥善保存。随后访问「模型广场」页面&#xff0c;记录您…...

如何快速掌握DamaiHelper:大麦网抢票脚本完整使用指南

如何快速掌握DamaiHelper&#xff1a;大麦网抢票脚本完整使用指南 【免费下载链接】DamaiHelper 大麦网演唱会演出抢票脚本。 项目地址: https://gitcode.com/gh_mirrors/dama/DamaiHelper DamaiHelper是一款基于PythonSelenium开发的大麦网自动化抢票脚本&#xff0c;专…...

5步轻松搞定小红书内容批量采集:XHS-Downloader终极使用指南

5步轻松搞定小红书内容批量采集&#xff1a;XHS-Downloader终极使用指南 【免费下载链接】XHS-Downloader 小红书&#xff08;XiaoHongShu、RedNote&#xff09;链接提取/作品采集工具&#xff1a;提取账号发布、收藏、点赞、专辑作品链接&#xff1b;提取搜索结果作品、用户链…...

终极指南:5步快速安装配置foobar2000开源歌词插件foo_openlyrics

终极指南&#xff1a;5步快速安装配置foobar2000开源歌词插件foo_openlyrics 【免费下载链接】foo_openlyrics An open-source lyric display panel for foobar2000 项目地址: https://gitcode.com/gh_mirrors/fo/foo_openlyrics foo_openlyrics是一款专为foobar2000打造…...