std::vector是C++最常用的序列容器。它以连续内存保存元素,兼具随机访问、良好缓存局部性和摊销常数时间尾插。真正掌握vector,不仅要会调用push_back,还要理解size与capacity、扩容、元素搬移、迭代器失效以及为什么不能用memcpy复制一般对象。
本文从常用接口讲到实现原理,并给出一个基于分配器的教学版动态数组,以观察原始存储、 ...
内存管理贯穿C与C++程序的整个生命周期。变量存放在哪里、对象何时开始存在、动态内存由谁释放、构造失败时怎样回收空间,这些问题直接影响程序的正确性、性能与稳定性。
本文从进程虚拟地址空间讲起,系统比较malloc/calloc/realloc/free与new/delete,分析operator new/operator delete、对象数组、定位new、 ...
STL 容器不仅要组织元素,还要获取原始存储、在存储上构造对象、销毁对象并归还存储。分配器(allocator)把这些底层步骤从容器的数据结构逻辑中分离出来,使容器能够适配不同内存来源和资源策略。
经典教材常以 SGI STL 的一级、二级空间配置器为例,讲解小对象内存池、尺寸分类自由链表和内存不足处理。这套设计非常有学习价值,但它是特定历史实现,不是 C+ ...
C++ 允许程序员直接管理内存,这带来了精确控制能力,也带来了内存泄漏、重复释放、悬空指针和异常安全等问题。智能指针的核心价值,不是把裸指针换一个名字,而是用对象生命周期表达资源所有权,并通过 RAII 自动完成释放。
本文从内存泄漏与 RAII 出发,系统讲解 std::unique_ptr、std::shared_ptr、std::weak_ptr 的使 ...
