C 程序员速通现代 C++(一):lambda、std::function、移动语义与智能指针
已经会 C,学 C++ 时最该先学哪几样?本文把 lambda、std::function、右值引用与移动语义、智能指针逐个对照到 C 里的手写模式:函数指针加 void* ctx、深拷贝与转移所有权、手写引用计数,并用 sizeof、堆地址和 ASan 的实测结果验证每个结论。
[TAG] ALL TAGS
6 TAKES
已经会 C,学 C++ 时最该先学哪几样?本文把 lambda、std::function、右值引用与移动语义、智能指针逐个对照到 C 里的手写模式:函数指针加 void* ctx、深拷贝与转移所有权、手写引用计数,并用 sizeof、堆地址和 ASan 的实测结果验证每个结论。
架构要解决的是变化、理解、故障和协作的成本。本文从耦合、可迁移、可适配、复杂度等八个维度讲怎么评价架构,讲维度之间怎么取舍、架构思考可以分几层,再用可编译的 C 代码过一遍 23 种设计模式。
两种消息队列都由内核保存消息,每条都拷两次,实测收发耗时也接近。真正的差别在怎么命名、怎么等待、怎么挑消息、怎么清理。本文给出可运行的 C 示例、实测数据、优缺点和选型顺序。
同一条消息走管道、消息队列、Unix 域 socket、本机 TCP、Binder 和共享内存,数据各被拷贝几次,实测差多少;各自的优缺点和使用场景;放到端侧 AI 上,模型权重、摄像头帧、推理结果和控制命令又该分别走哪条通道。
全局、静态、const、局部、malloc 出来的变量分别落在 .data、.bss、.rodata、栈还是堆,在 Linux 进程和单片机的 Flash / RAM 里各是什么样;进程内存越涨越大时,怎样从 /proc 的 VmRSS 曲线、smaps 快照对比一路定位到某一行代码,FreeRTOS 和嵌入式 Linux 上又该怎么查。
一个 epoll 回显服务器里,listen_fd 为什么「可读」就代表有新连接,epoll_wait 返回后的 for 循环和 select 有什么不同;水平触发与边缘触发差在哪,read / write 的每种返回值和客户端断开该怎么处理。全部结论附 WSL 实测。