对象生命周期¶
是什么 / 解决什么问题¶
C++ 性能问题经常和生命周期问题绑定:拷贝过多、move 后误用、引用失效、未定义行为都会在低延迟系统里放大成稳定性问题。
RAII¶
RAII 用对象生命周期管理资源:
class Fd {
public:
explicit Fd(int fd) : fd_(fd) {}
~Fd() { if (fd_ >= 0) close(fd_); }
private:
int fd_;
};
move 语义¶
低延迟代码要避免不必要拷贝,但 move 不是零成本魔法。对小对象,拷贝可能足够快;对包含堆内存的对象,move 可以避免重新分配。
引用失效¶
热路径中保存容器元素指针时,要确认容器是否会移动元素。
常见未定义行为¶
- use-after-free
- 数据竞争
- 越界访问
- strict aliasing 违规
- 未对齐访问
面试高频问题¶
shared_ptr 是否适合热路径¶
通常不优先使用。引用计数更新是原子操作,可能引入 cache line 竞争。热路径更常见的是明确所有权、对象池或 arena。