<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[lemo_n_的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/lemo_n_</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; lemo_n_]]></copyright><item><title><![CDATA[C++10_vector模拟实现复习]]></title><link>https://blog.youkuaiyun.com/lemo_n_/article/details/170051753</link><guid>https://blog.youkuaiyun.com/lemo_n_/article/details/170051753</guid><author>lemo_n_</author><pubDate>Wed, 04 Nov 2026 19:35:28 +0800</pubDate><description><![CDATA[本文通过模拟实现C++ vector，聚焦三个核心指针：_start、_finish、_end_of_storage，揭示其内存布局与接口设计的内在逻辑。从构造函数初始化空状态，到push_back扩容时机判断，深入剖析为何不能用memcpy（避免浅拷贝陷阱），详解insert后需重算位置以防止野指针，强调erase返回迭代器的必要性。通过resize复用、深拷贝技巧及initializer_list陷阱解析，揭示接口设计皆由内存安全驱动。最终指出：理解vector的本质，是掌握“指针相减”计算size/c]]></description><category></category></item><item><title><![CDATA[C++09_vector类复习]]></title><link>https://blog.youkuaiyun.com/lemo_n_/article/details/170046529</link><guid>https://blog.youkuaiyun.com/lemo_n_/article/details/170046529</guid><author>lemo_n_</author><pubDate>Wed, 04 Nov 2026 15:18:59 +0800</pubDate><description><![CDATA[本文以10个核心问题为主线，系统解析C++ vector的底层机制：从基本概念、初始化方式、遍历方法，到size与capacity的区别、扩容策略（VS 1.5×，g++ 2×）、reserve与resize差异、中间增删的挪动原理、迭代器失效原因，直至二维vector的内存布局（含三指针结构）。通过“先会用、再懂扩容、最后看清对象结构”的递进逻辑，揭示vector作为动态数组的本质——连续内存、自动扩容、随机访问高效，但插入删除代价高，迭代器易失效。全文深入浅出，助读者摆脱“黑盒”认知，真正掌握其内存图景]]></description><category></category></item><item><title><![CDATA[进程控制_复制品的出生退场与收尸_第六篇]]></title><link>https://blog.youkuaiyun.com/lemo_n_/article/details/169848592</link><guid>https://blog.youkuaiyun.com/lemo_n_/article/details/169848592</guid><author>lemo_n_</author><pubDate>Mon, 02 Nov 2026 20:30:12 +0800</pubDate><description><![CDATA[fork 通过写时拷贝创建子进程，父子各从返回一次。子进程获0，父进程获其PID。进程退出分三类：正常成功（退出码0）、失败（非0退出码）、异常终止（被信号杀）。exit 会清理缓冲区、关闭流，而 _exit 直接终止，不刷缓冲，易丢输出。子进程应使用 _exit 避免影响父进程。退出状态为16位位图，正常退出码在高8位，信号终止则在低8位。父进程必须 wait 收尸，否则子进程变僵尸。]]></description><category></category></item><item><title><![CDATA[C++01_入门基础复习]]></title><link>https://blog.youkuaiyun.com/lemo_n_/article/details/169847969</link><guid>https://blog.youkuaiyun.com/lemo_n_/article/details/169847969</guid><author>lemo_n_</author><pubDate>Mon, 02 Nov 2026 19:44:39 +0800</pubDate><description><![CDATA[本文系统梳理C++入门八大核心语法点：后缀决定编译器前端、命名空间解决重名问题、cout依赖函数重载实现类型自动识别、缺省参数须从右向左连续、同名函数靠形参区分、引用与指针本质差异、inline仅为建议、NULL在C++中为0易引发类型混淆。结合实例解析编译流程与作用域机制，揭示语言设计背后的逻辑，助初学者快速建立清晰认知。]]></description><category></category></item><item><title><![CDATA[程序地址空间_每个进程都以为自己独占整台机器_第五篇]]></title><link>https://blog.youkuaiyun.com/lemo_n_/article/details/169652174</link><guid>https://blog.youkuaiyun.com/lemo_n_/article/details/169652174</guid><author>lemo_n_</author><pubDate>Sat, 31 Oct 2026 21:01:35 +0800</pubDate><description><![CDATA[每个进程都以为自己独占4G地址空间，实则所有地址均为虚拟地址。通过页表映射，同一虚拟地址在不同进程间指向不同物理内存，实现隔离与共享。内核用mm_struct和vm_area_struct管理地址空间，fork采用写时拷贝优化内存使用。全局变量、字符串常量等因固定位置与权限位得以长期存在，而“4G”仅为编号上限，非实际内存占用。虚拟地址机制虽绕，却解决了安全、效率与灵活性难题。]]></description><category></category></item><item><title><![CDATA[命令行参数与环境变量_main的参数是哪来的_第四篇]]></title><link>https://blog.youkuaiyun.com/lemo_n_/article/details/169555045</link><guid>https://blog.youkuaiyun.com/lemo_n_/article/details/169555045</guid><author>lemo_n_</author><pubDate>Fri, 30 Oct 2026 14:19:58 +0800</pubDate><description><![CDATA[上一篇的主角是"已经活着的进程"。这一篇把镜头往前挪一格，对准进程刚被拉起来的那一瞬间。主线一句话：这句话是整篇的地基。记住它，后面所有细节都只是在这句话上长出来的枝叶。问：先问一个听起来有点冒犯的问题—— 函数可以有参数吗？答： 有，而且是最常见的两个：
1.1  也是"被调用"的
很多人写过几百个 ，从没想过它跟普通函数有什么不同。其实没有本质区别：有函数名、有参数、有返回值、被人调用。唯一的特殊之处在于，调用它的不是你的代码，而是运行库（libc）里的启动代码。既然是"被调用"，它当然可以有参数——那]]></description><category></category></item><item><title><![CDATA[调度_内核怎么在几微秒内挑出下一个进程_第三篇]]></title><link>https://blog.youkuaiyun.com/lemo_n_/article/details/169365278</link><guid>https://blog.youkuaiyun.com/lemo_n_/article/details/169365278</guid><author>lemo_n_</author><pubDate>Wed, 28 Oct 2026 20:05:55 +0800</pubDate><description><![CDATA[下面这行 H1 是占位标题，你可以直接改成自己的文章标题。]]></description><category></category></item><item><title><![CDATA[C++ string 类复习：从会用到底层原理，一篇讲透]]></title><link>https://blog.youkuaiyun.com/lemo_n_/article/details/168661457</link><guid>https://blog.youkuaiyun.com/lemo_n_/article/details/168661457</guid><author>lemo_n_</author><pubDate>Wed, 21 Oct 2026 20:46:18 +0800</pubDate><description><![CDATA[有没有一种既能共享又能不崩的拷贝？有，叫写时拷贝（Copy On Write，COW）：先让多个对象共享同一份资源，只有谁要"写"（修改）时，才真正给他拷贝一份独立的。它的实现基础是浅拷贝 + 引用计数。]]></description><category></category></item><item><title><![CDATA[Linux：进程机制_从PCB到上下文切换_第二篇]]></title><link>https://blog.youkuaiyun.com/lemo_n_/article/details/168558980</link><guid>https://blog.youkuaiyun.com/lemo_n_/article/details/168558980</guid><author>lemo_n_</author><pubDate>Tue, 20 Oct 2026 19:28:17 +0800</pubDate><description><![CDATA[一层是公平：范围有限，防止有人把优先级设到极端，把别人饿死。一层是权限：只有 root 能调负值，普通人只能让自己更谦让，不能让自己更霸道。还有一层是系统目标：分时系统追的是"大家都能推进"，所以不需要拉得很开；实时系统追求"必须在期限内完成"，策略就完全不同。]]></description><category></category></item><item><title><![CDATA[Linux：冯诺依曼体系结构到进程_第一篇]]></title><link>https://blog.youkuaiyun.com/lemo_n_/article/details/168532036</link><guid>https://blog.youkuaiyun.com/lemo_n_/article/details/168532036</guid><author>lemo_n_</author><pubDate>Tue, 20 Oct 2026 09:52:49 +0800</pubDate><description><![CDATA[复习最怕的不是记不住，是知识点散成一地，串不起来。先看这条链：一路推到底，最后落在这一句上：这句话是上篇的终点，也是下篇的起点。问：平时说"电脑在算"，到底是哪个部件在算？答： 这张图值得自己动手画一遍。看着简单，但它决定了后面所有结论。数据信号数据信号数据控制信号控制信号控制信号控制信号输入设备键盘 鼠标 摄像头 麦克风存储器（内存）输出设备显示器 打印机 喇叭运算器控制器图上有两样东西要看清：方框和箭头。先看方框，一共五个：输入设备（键盘、鼠标、摄像头、麦克风）、输出设备（显示器、打印机、喇叭）、存储器]]></description><category></category></item><item><title><![CDATA[Linux 基础指令速查：从 ls 到 tar 的常用命令全解析]]></title><link>https://blog.youkuaiyun.com/lemo_n_/article/details/167173159</link><guid>https://blog.youkuaiyun.com/lemo_n_/article/details/167173159</guid><author>lemo_n_</author><pubDate>Tue, 06 Oct 2026 13:41:12 +0800</pubDate><description><![CDATA[目录的可执行权限是表示你可否在目录下执行命令。如果目录没有-x权限，则无法对目录执行任何命令，甚至无法cd进入目录，即使目录仍然有-r读权限（这个地方很容易犯错，认为有读权限就可以进入目录读取目录下的文件）。而如果目录具有-x权限，但没有-r权限，则用户可以执行命令，可以cd进入目录。但由于没有目录的读权限，所以在目录下，即使可以执行ls命令，但仍然没有权限读出目录下的文档。]]></description><category></category></item><item><title><![CDATA[C++入门到精通：内存管理全方位解析]]></title><link>https://blog.youkuaiyun.com/lemo_n_/article/details/166947036</link><guid>https://blog.youkuaiyun.com/lemo_n_/article/details/166947036</guid><author>lemo_n_</author><pubDate>Thu, 01 Oct 2026 19:35:29 +0800</pubDate><description><![CDATA[本篇文章将带你了解new和delete运算符，以及它们的实现原理。那么话不多说，直接开始吧。malloc/free和new/delete的共同点是：都是从堆上申请空间，并且需要用户手动释放。malloc和free是函数，new和delete是操作符malloc申请的空间不会初始化，new可以初始化malloc申请空间时，需要手动计算空间大小并传递，new只需在其后跟上空间的类型即可，如果是多个对象，[]中指定对象个数即可。]]></description><category></category></item><item><title><![CDATA[C++入门到精通：类和对象（下）全方位解析]]></title><link>https://blog.youkuaiyun.com/lemo_n_/article/details/166728438</link><guid>https://blog.youkuaiyun.com/lemo_n_/article/details/166728438</guid><author>lemo_n_</author><pubDate>Sun, 27 Sep 2026 14:57:45 +0800</pubDate><description><![CDATA[本篇文章将是类和对象的最后一篇文章了，那么话不多说，直接开始吧。]]></description><category></category></item><item><title><![CDATA[C++入门到精通：类和对象（中）全方位解析]]></title><link>https://blog.youkuaiyun.com/lemo_n_/article/details/166598674</link><guid>https://blog.youkuaiyun.com/lemo_n_/article/details/166598674</guid><author>lemo_n_</author><pubDate>Fri, 25 Sep 2026 14:25:09 +0800</pubDate><description><![CDATA[在上一篇文章中，我们已经初步认识了 C++ 的类和对象。今天，我们将继续深入探索类的更多奥秘。准备好了吗？让我们直接开始吧！]]></description><category></category></item><item><title><![CDATA[C++入门到精通：类和对象（上）全方位解析]]></title><link>https://blog.youkuaiyun.com/lemo_n_/article/details/166372153</link><guid>https://blog.youkuaiyun.com/lemo_n_/article/details/166372153</guid><author>lemo_n_</author><pubDate>Thu, 24 Sep 2026 00:00:00 +0800</pubDate><description><![CDATA[你是否曾好奇过，为什么 C++ 中 struct 和 class 都能定义类？它们之间到底有什么区别？类又是如何在内存中"活"起来的？如果你对这些问题感到困惑，那么这篇文章正是为你准备的。类的定义与访问限定符：掌握 public、private、protected 的用法与区别；inline 的奥秘：了解它如何提升性能，并为编译器创造更多优化空间；类域与作用域：理解 :: 作用域操作符的作用；类实例化与内存布局：弄清对象在内存中如何分配空间、大小如何计算；this 指针。]]></description><category></category></item><item><title><![CDATA[C++ 核心语法速过：命名空间、引用、函数重载与 nullptr 深度解析]]></title><link>https://blog.youkuaiyun.com/lemo_n_/article/details/164229338</link><guid>https://blog.youkuaiyun.com/lemo_n_/article/details/164229338</guid><author>lemo_n_</author><pubDate>Sat, 05 Sep 2026 00:00:00 +0800</pubDate><description><![CDATA[本篇文章将讲解C++中的命名空间、引用、函数重载、nullptr，话不多说，直接开始吧namespace本质是定义出⼀个域，这个域跟全局域各⾃独⽴，不同的域可以定义同名变量，所以上面这种类似的问题就能解决了。定义命名空间，需要使⽤到namespace关键字，后⾯跟命名空间的名字，然后接⼀对{}即可，{}中即为命名空间的成员。命名空间中可以定义变量/函数/类型等。]]></description><category></category></item><item><title><![CDATA[【数据结构】别再被“假溢出”折磨了！一文彻底搞懂循环队列的底层逻辑与C语言实现]]></title><link>https://blog.youkuaiyun.com/lemo_n_/article/details/164126177</link><guid>https://blog.youkuaiyun.com/lemo_n_/article/details/164126177</guid><author>lemo_n_</author><pubDate>Fri, 28 Aug 2026 21:21:47 +0800</pubDate><description><![CDATA[本篇文章将带你了解队列基本概念、基本操作。这篇文章将带你全部搞懂。int* a;// 指向数组的指针int front;// 指向对头int rear;// 指向队尾的下⼀个位置int N;// 空间⼤⼩，队列⻓度为N-1。]]></description><category></category></item><item><title><![CDATA[一文带你搞懂：函数栈帧的创建与销毁]]></title><link>https://blog.youkuaiyun.com/lemo_n_/article/details/164126087</link><guid>https://blog.youkuaiyun.com/lemo_n_/article/details/164126087</guid><author>lemo_n_</author><pubDate>Fri, 28 Aug 2026 16:34:26 +0800</pubDate><description><![CDATA[本篇文章将会带你搞懂函数栈帧的创建与销毁，会说明函数栈帧有什么用，并且能够更好理解：局部变量是如何创建的？为什么局部变量不初始化内容是随机的？函数调用时参数是如何传递的？传参的顺序是怎样的？函数的形参和实参分别是怎样实例化的？函数的返回值是如何带回的？以及理解函数栈帧能解决什么问题？这些问题都将一一解决。那么话不多说。我们在写C语言代码的时候，经常会把一个独立的功能抽象为函数，所以C程序是以函数为基本单位的。那函数是如何调用的？函数的返回值又是如何带回的？函数参数是如何传递的？]]></description><category></category></item><item><title><![CDATA[一文搞定C语言栈：手把手教你写出健壮的入栈、出栈与内存销毁]]></title><link>https://blog.youkuaiyun.com/lemo_n_/article/details/164096083</link><guid>https://blog.youkuaiyun.com/lemo_n_/article/details/164096083</guid><author>lemo_n_</author><pubDate>Wed, 26 Aug 2026 20:52:45 +0800</pubDate><description><![CDATA[那么本篇文章将带你深入了解栈，并一步步实现栈的相关操作，这篇文章将带您彻底搞懂栈，那么少的不说，多的不唠。]]></description><category></category></item><item><title><![CDATA[深入浅出：彻底搞懂双向链表的核心原理与实现]]></title><link>https://blog.youkuaiyun.com/lemo_n_/article/details/163441343</link><guid>https://blog.youkuaiyun.com/lemo_n_/article/details/163441343</guid><author>lemo_n_</author><pubDate>Wed, 12 Aug 2026 14:38:35 +0800</pubDate><description><![CDATA[本文介绍了带头双向循环链表的实现方法。相比单链表，其优势在于通过头节点的prev指针快速定位尾节点（O(1)复杂度），以及在任意节点前插入/删除操作的高效性。文章详细讲解了链表结点的创建（包含数据、前后指针和长度计数器）以及关键操作的实现：初始化时头节点自循环；销毁时循环释放所有节点；打印时遍历输出。重点说明了头插/尾插操作的四步指针调整流程，以及头删操作的边界检测和指针重定向过程。所有操作都配有清晰的代码实现和对应的流程图解，突出展示了双向循环链表在指针操作上的对称性和高效性。]]></description><category></category></item></channel></rss>