各位老师好!
这是CPP面试冲刺周刊 (c++ weekly)
陪你一起快速冲击大厂面试 第四期
周刊目标:
- 不是成为C++专家,而是成为C++面试专家
本期内容:
- 如何为一个类自定义new/delete
一页PPT 解释: (回答有逻辑)
| 维度 | ① 类内 new/delete | ② 全局 new/delete(弱符号) | ③ LD_PRELOAD + tcmalloc |
|---|---|---|---|
| 生效时机 | 编译期(静态绑定) | 链接期(符号强弱覆盖) | 运行期(动态装载器优先级) |
| 作用范围 | 仅该类/基类查找链 | 全局(除已绑定到类内的 new) | 全局(动态库与主程序) |
| 机制 | 作用域查找 + 非虚(无 vtable) | 弱符号 vs 强符号 | 预加载库先解析同名符号 |
| 是否依赖弱符号 | 否 | 是(libstdc++ 默认全局 new 为 weak) | 否(依赖 ld.so 解析顺序) |
| 源码是否需改动 | 需要(在类内写函数) | 需要(提供全局 operator new/delete) | 不需要(设置环境变量即可) |
| 常见用途 | 类级内存池、对齐、对象复用 | 全局策略(统计/替换分配器/统一注入) | 线上快速切换分配器/排查内存/零侵入部署 |
题目来源: C++ Primer 第 18 章节
- Exercise 18.9: Declare members new and delete for the QueueItem class.
- 18.1.6 Class Specific new and delete
- Exercise 18.6: Reimplement your Vector class to use operator new, operator delete, placement new, and direct calls to the destructor.
帖子 字数 限制 请阅读 原文:https://mp.weixin.qq.com/s/wSP672RIfzRZhMTU-YotkQ