- 博客(619)
- 资源 (12)
- 收藏
- 关注
原创 C++行业与就业深度分析-岗位直达闭环服务
后端/高并发、音视频/多媒体、游戏/引擎、嵌入式/车载/IoT、金融/量化、AI/高性能计算。对象生命周期、内存池、无锁结构、TCP/IP 与零拷贝。系统、网络、音视频、游戏、车载、金融、AI。帧率、DrawCall、内存/显存占用。岗位含金量高,薪资和成长空间都很可观。看赛道、看城市、看你能不能交付指标。QPS、P99 延迟、资源占用。端到端延迟、卡顿率、丢包恢复。语言、内存、工程、并发、网络。渲染、动画、物理与工具链。
2025-08-25 14:15:12
972
原创 堆中动态分配内存时,内存分配的过程是怎样的?
从操作系统角度来看,动态内存分配的核心是虚拟内存管理,主要通过。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。:程序从堆中动态分配内存时,内存分配的过程是怎样的?
2025-09-18 19:43:44
178
原创 什么是零拷贝?
的技术,主要用于文件系统、设备驱动、网络协议栈等场景,以提升数据传输性能。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。它的目标和实现方式是什么?
2025-09-18 19:43:08
184
原创 CPU 负载过高怎么排查问题
当 CPU 负载过高时,你会如何排查问题?在 C++ 程序中又该如何定位?😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。
2025-09-16 20:15:42
130
原创 内存、高速缓存和 CPU 的关系
能解释一下内存、高速缓存和 CPU 的关系吗?另外缓存和缓冲的区别是什么?😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。
2025-09-16 20:13:42
182
原创 用户态和内核态的区别
😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。:能解释一下用户态和内核态的区别吗?用户态和内核态的区别主要体现在。
2025-09-14 16:39:57
246
原创 线程切换需要做哪些操作?
线程切换与进程切换类似,但由于线程共享同一进程的地址空间,因此少了页表切换这一步。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。:线程切换需要做哪些操作?
2025-09-14 16:37:48
131
原创 不带缓存 I-O 和标准 I-O(带缓存)的区别
不带缓存的 I/O(系统调用级别)如readwriteopen等。数据直接交由内核的块缓存(Page Cache)管理,不经过用户态的流缓存。标准 I/O(带缓存的 I/O)(C 库函数封装)如fgetsfreadfwrite等。使用用户态的流缓存(stdio 缓存),在用户空间先进行缓冲与优化,再统一写入内核块缓存。特性不带缓存 I/O标准 I/O(带缓存)API 层级系统调用(如 read/write)C 标准库函数(如 fread/fwrite)用户态流缓存无有。
2025-09-08 19:56:51
328
原创 I/O 写操作的完整流程
应用缓冲区 → 系统缓冲区 → 页缓存 → 硬盘缓存 → 磁盘介质。多级缓冲既提升了性能,也降低了 CPU 与磁盘速度差距带来的影响。只有写入磁盘物理介质才算数据真正持久化。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。
2025-09-08 19:56:17
474
原创 进程切换的过程
进程切换的核心是上下文保存 + 上下文恢复CPU 寄存器与程序计数器;进程控制块(PCB);内存页表与内核栈。操作系统通过这些切换,才能在多任务环境中实现并发执行。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。
2025-09-08 19:55:41
315
原创 内存交换有哪些需要注意的关键点吗?
必须有足够快、足够大的备份存储。交换时间要远小于进程执行时间,否则得不偿失。合理选择换出进程,避免频繁换入换出。使用独立交换空间,提高效率。在内存紧张时启用交换,负载下降时暂停。现代系统更多使用页级交换而不是整进程交换。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。
2025-09-05 19:43:42
202
原创 利用虚拟内存机制有什么优点?
内存访问安全性:防止非法访问。进程隔离:每个进程独立地址空间,互不干扰。简化程序编写:无需关心地址冲突。高效利用内存:允许物理内存离散分配。扩展可用内存:通过交换机制,突破物理内存限制。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。
2025-09-05 19:43:11
326
原创 虚拟页面的分类
虚拟页面分类:未分配、未缓存、已缓存。页命中:虚拟页在物理内存中,直接访问。缺页异常:虚拟页不在物理内存 → 内核通过页面置换算法将其调入物理内存。虚拟内存机制依赖页表和缺页异常处理,保证了在有限物理内存下,程序仍能运行大规模逻辑地址空间。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。
2025-09-05 19:40:27
361
原创 虚拟内存的工作原理
虚拟内存的核心机制为每个进程提供独立的逻辑地址空间。通过页表完成虚拟地址 → 物理地址的映射。若目标页不在物理内存,触发缺页异常,从磁盘加载页面到物理内存。效果进程感觉自己拥有完整的地址空间,而不受限于实际物理内存容量。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。
2025-09-04 21:49:12
329
原创 虚拟内存的目的是什么?
扩展物理内存,让程序感觉拥有更大的可用空间。实现进程隔离,增强安全性。提升内存利用率,避免必须全部加载程序。支持大程序运行,突破物理内存限制。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。
2025-09-04 21:48:41
302
原创 什么是虚拟内存?
虚拟内存(Virtual Memory)是操作系统为每个进程提供的一种逻辑上的、连续的地址空间,它与实际的物理内存相隔离。在 32 位操作系统中,每个进程都会被分配4GB 的虚拟地址空间(0x00000000 ~ 0xFFFFFFFF),无论物理内存是否真的有这么大。进程会“认为”自己独占 4GB 内存,而实际上这只是虚拟的映射。
2025-09-04 21:47:59
174
原创 虚拟内存和物理内存的区别?
每个进程创建时,内核为它分配4GB 的虚拟地址空间(在 32 位机上)。刚开始只建立虚拟内存与磁盘文件的映射(例如.text.data段),并未立即加载到物理内存。当执行到某段代码或访问某块数据时:如果该虚拟页尚未加载,会触发缺页异常;内核将数据从磁盘加载到物理内存,并更新页表。动态分配内存(malloc)时,也只是分配虚拟内存;真正访问时才会触发缺页异常并分配物理内存。通过mmap可以直接将文件映射到虚拟地址空间,实现文件与内存的对应关系。
2025-09-02 22:44:57
523
原创 直接使用物理内存的弊端
面试官:为什么现代操作系统不直接让进程使用物理内存?应聘者回答参考:如果直接使用物理内存,会有以下 四个主要弊端:现代操作系统通过 虚拟内存机制 来解决这些问题:总结:直接使用物理内存的问题主要体现在:这也是为什么现代操作系统必须引入 虚拟内存 的原因。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。
2025-09-02 22:44:26
311
原创 分页式、分段式、段页式和请求式分页
管理方式特点碎片情况优缺点分区式整个程序一次性装入内存外部碎片严重简单,但浪费空间分页式固定大小页,物理地址离散少量内部碎片内存利用率高,不利共享分段式按逻辑模块划分外部碎片方便共享与保护,难以分配大段段页式分段后再分页减少外部碎片结合两者优点,开销较大请求分页按需调入页面几乎无碎片支持虚拟内存,提高利用率总结分页式:解决外部碎片,提升内存利用率。分段式:方便逻辑管理和权限控制。段页式:两者结合,取长补短。请求式分页 & 虚拟内存。
2025-08-31 22:26:46
368
原创 什么是内部碎片和外部碎片
类型内部碎片外部碎片定义已分配内存块中未用完的部分内存中分散的小空闲块无法利用出现场景固定分配(分页式)动态分配(分段式)示例50 MB 分配只用了 45 MB,浪费 5 MB5 MB + 15 MB 空闲,但无法满足 10 MB 连续空间需求😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。
2025-08-31 22:24:34
291
原创 什么是用户态和内核态?为什么要划分?
用户态:只能访问用户空间,权限受限,需要通过系统调用访问内核。内核态:可访问所有资源,包括内核空间和硬件。内存划分用户空间(3GB,进程私有)内核空间(1GB,所有进程共享)好处:保护内核安全、保证系统稳定、增强进程隔离性。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。
2025-08-31 22:24:02
339
原创 用户态和内核态的区别?
用户态:权限受限,不能直接操作硬件,通过系统调用进入内核态。内核态:权限最高,掌控硬件和系统资源。CPU 切换:用户态 → 内核态(系统调用/中断/异常),内核态 → 用户态(返回用户进程)。系统调用 vs 库函数:系统调用是最底层接口,库函数是对其封装。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。
2025-08-31 22:23:31
362
原创 动态链接库和静态链接库
特性静态库(.a / .lib)动态库(.so / .dll)链接时机编译期程序运行期文件大小较大(包含库代码)较小(只保存符号引用)内存占用多份拷贝多进程共享一份更新维护需重新编译应用程序替换库文件即可运行速度快(直接执行)略慢(运行时加载)发布方式只需发布一个可执行文件需随程序发布库文件总结静态库:适合对性能要求高、不常更新的应用(如嵌入式开发)。动态库:适合频繁更新、多个程序共享同一套代码的场景(如操作系统 API、第三方 SDK)。
2025-08-31 22:22:45
298
原创 静态内存和动态内存
特性静态内存动态内存分配时机编译/运行初始化程序运行时管理方式系统自动管理程序员手动管理存储区域栈 / 全局区堆访问速度快(CPU Cache 友好)相对慢灵活性固定大小,生命周期受限按需分配,灵活控制典型问题栈溢出(局部变量过大、递归过深)内存泄漏、悬空指针总结静态内存→ 生命周期固定,安全省心,但缺乏灵活性。动态内存→ 灵活可控,但需要程序员手动管理,容易出错。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。
2025-08-31 22:22:07
329
原创 源代码到可执行文件的编译过程?
静态链接库(.lib/.a)链接时将代码复制进可执行文件。发布时只需要.exe文件,不依赖外部库。缺点:占空间,更新不方便。动态链接库(.dll/.so)程序运行时加载库文件。多个程序可共享同一份库,节省内存。更新库函数无需重新编译整个程序。一句话总结源代码 → 预编译(展开宏和头文件) → 编译(生成汇编) → 汇编(生成目标文件) → 链接(合并目标文件和库,生成可执行文件)。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。
2025-08-31 22:21:36
425
原创 有哪些优化内存使用的方法?
面试官:在程序开发中,有哪些优化内存使用的方法?应聘者回答参考:总结:优化内存的方法主要包括:这些方法能有效降低内存消耗,提高程序性能。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。
2025-08-31 22:21:03
302
原创 堆栈溢出一般是由什么原因导致的?
面试官:堆溢出和栈溢出一般是由什么原因导致的?应聘者回答参考:总结:😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。
2025-08-28 21:33:37
185
原创 内存泄漏通常会有哪些表现?
面试官:在实际编程中,内存泄漏通常会有哪些表现?应聘者回答参考:总结:😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。
2025-08-28 21:32:54
225
原创 内存溢出和内存泄漏的区别?
面试官:请解释一下内存溢出和内存泄漏的区别?以及导致内存溢出的常见因素。应聘者回答参考:常见导致原因:总结:两者关系:内存泄漏是内存溢出的重要原因之一。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。
2025-08-28 21:32:17
327
原创 常见的内存分配和使用错误有哪些?
面试官:在 C/C++ 开发中,常见的内存分配和使用错误有哪些?应聘者回答参考:问题:使用 时,内存可能分配失败,若未检查返回值就直接使用,会导致程序崩溃。解决办法:或者在函数入口加 检查传入指针。问题:常见于数组下标错误(多写一位或少写一位),尤其在 for 循环中容易出错。示例错误:解决办法:总结:常见的内存错误有五类:这些问题是 C/C++ 程序最常见的 Bug 来源,也是面试的高频考点。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。
2025-08-26 14:19:34
481
原创 C/C++ 中结构体的内存对齐问题?
默认对齐:由系统平台决定(Windows 常为 8,Linux 常为 4)。对齐规则:成员对齐 → 结构体对齐 → 总体大小补齐。C++11alignof获取对齐数,alignas指定对齐方式,但不能小于自然对齐。强制单字节对齐:需使用或。位域:可精确控制二进制存储,但依赖编译器实现。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。
2025-08-26 14:19:03
500
原创 内存对齐的原则是什么?
规则 1:成员按自身大小对齐。规则 2:结构体成员按其内部最大成员对齐。规则 3:整个结构体大小补齐为最大成员大小的整数倍。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。
2025-08-26 14:18:21
331
原创 堆和栈的内存是如何生长的?
面试官:在程序运行时,堆和栈的内存是如何生长的?应聘者回答参考:总结:😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。
2025-08-26 14:17:50
480
原创 什么大小端
面试官:请解释一下计算机的内存大小端问题。应聘者回答参考:以 16 进制数 为例(占 4 字节):小端模式(Intel x86)大端模式(IBM PowerPC)4. 如何理解无论大端还是小端,CPU 访问内存时都是从低地址到高地址顺序读取。差别仅在于:在低地址处存放的是数据的高字节还是低字节。总结:😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。
2025-08-26 14:17:12
300
原创 为什么在 Linux 中按下Ctrl + C会导致进程结束?
😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。为什么在 Linux 中按下。
2025-08-26 14:16:42
529
C++ Hook DirectX 11的内部Imgui绘制的框架封装C++ Hook DirectX 11的内部Imgui绘制的
2022-10-07
C++ 面向对象实现的雷霆战机游戏,带音乐 ,主角带动态特效。完整源码 EasyX
2022-07-28
MFC 标签页 TabSheet.h TabSheet.cpp
2022-07-19
Inject.exe
2020-11-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅