栈
-
C++的协程底层如何工作_C++20协程的Promise/Future模型与挂起点原理
C++20协程基于编译器生成的状态机和三个核心组件:协程函数、promise类型与awaiter协议。当函数包含co_await、co_yield或co_return时,编译器将其转换为状态机,分配协程帧以保存局部状态,并管理挂起与恢复流程;promise类型通过get_return_object、…
-
C++如何与Lua交互?C++嵌入Lua脚本引擎教程【混合编程】
C++嵌入Lua核心是纯C API操作栈:初始化状态机并加载脚本;C++调用Lua函数需压参、pcall、取返回值;注册C函数供Lua调用;用userdata封装复杂数据并配元表;全程注意栈平衡。 用C++嵌入Lua,核心是调用Lua C API完成栈操作、函数调用和数据交换。不依赖第三方绑定库(如…
-
C++面试常问问题有哪些?C++核心知识点与面试题汇总【求职必备】
C++面试重在考察问题定位能力、工程意识与避坑经验,核心聚焦内存管理、面向对象、指针引用、类型转换与const四大模块。 面试官问C++,不是考你背了多少语法,而是看你能多快定位问题本质、有没有工程意识、能不能避开常见坑。下面这些是真实高频出现的问题,按实际考察逻辑归类,不堆砌、不罗列。 内存管理:…
-
C++如何实现一个可撤销命令_C++命令模式与备忘录模式的结合应用
通过命令模式封装操作并结合备忘录模式保存状态,实现可撤销的命令。具体步骤为:1. 定义命令接口,包含execute和undo方法;2. 命令执行前保存接收者状态到备忘录;3. 执行时记录命令到历史栈;4. 撤销时调用栈顶命令的undo方法并恢复状态;5. 清理资源防止内存泄漏。该方式适用于文本编辑器…
-
如何用C++实现一个有限状态机(FSM)?C++游戏AI与协议解析【设计模式】
用类封装状态与转移逻辑最直观,如游戏AI中“巡逻”“追击”“逃跑”各实现enter/update/exit/transitionTo;协议解析可用枚举+函数指针或std::function轻量跳转;模板元编程可做编译期状态转移合法性检查;需注意幂等性、粘包处理及共享上下文。 用类封装状态与转移逻辑 …
-
C++中的inline内联函数有什么用?C++编译器优化技巧【性能提升】
inline是编译器优化建议而非强制指令,核心作用是解决ODR问题并允许头文件中重复定义;是否实际内联由编译器根据函数长度、调用频率等自主决策。 inline 关键字告诉编译器:这个函数体小、调用频繁,建议在调用处直接展开代码,而不是跳转执行——目的是减少函数调用的开销(如压栈、跳转、返回),从而提…
-
c++如何实现一个简单的流式JSON解析器_c++ SAX模型与低内存解析【数据处理】



C++轻量级流式JSON解析器采用SAX事件驱动设计,O(1)内存占用,支持UTF-8、转义处理与零拷贝string_view回调。 用 C++ 实现一个轻量级流式 JSON 解析器,核心是采用 SAX(Simple API for XML)风格——即事件驱动、不构建完整 DOM 树,边读边处理,内…
-
c++中的协程是如何挂起和恢复的_c++ coroutine_handle详解【底层】
C++20协程的挂起与恢复由coroutine_handle显式控制,依赖awaitable对象的await_suspend()行为;resume()跳转至挂起点下一条指令,destroy()显式释放帧内存。 在 C++20 中,协程的挂起与恢复并非由语言直接调度,而是通过用户定义的 corouti…
-
C++拷贝构造函数讲解_C++对象复制执行流程分析
拷贝构造函数用于用已存在对象初始化新对象,三种典型触发场景:对象显式初始化、函数值传递参数、函数返回局部对象;其签名必须为单参数const引用,未定义时编译器合成默认浅拷贝版本;与拷贝赋值操作语义不同,前者作用于对象创建时,后者作用于已有对象内容替换。 拷贝构造函数在C++中负责用一个已存在的对象初…
-
C++如何进行性能剖析?gperftools在C++项目中的应用【性能分析】
gperftools性能剖析核心是轻量接入、精准采样与可视化解读,支持无调试符号定位热点;需编译加-g、-fno-omit-frame-pointer,链接加-lprofiler -lpthread,运行时通过CPUPROFILE等环境变量控制采样,再用pprof生成文本、callgrind或SVG…