包含标签 内存管理 的文章

C++内存管理|05 各平台下std::allocator概览

1. VC6中的std::allocator VC6中的std::allocator源码实现如下图: 从图中可以发现,VC6中的std::allocator并没有进行memory pool这类的处理,直接在里面调用operator new(),进而调用::operator new,然后mall……

阅读全文

C++内存管理|04 内存池

1. per-class allocator (ver 1.0) 前面几篇内存管理介绍了在C++中进行内存管理的接口,有了这些接口就可以开始使用这些工具管理内存。首先来看一个来自<<C++ Primer>> 3ed, p765的一个例子: #include <cstddef> #include <iostream> using namespace std; class Screen { public: Screen(int x) :i(x) {}; int geti() { return i; }; void* operator new(size_t size) { Screen *p; if (!freeStore) { size_t chunk = screenChunk * size; freeStore = p = reinterpret_cast<Screen*>(new char[chunk]); for (; p != &freeStore[screenChunk - 1]; ++p) { p->next = p +……

阅读全文

C++内存管理|03 重载

前面两篇【C++内存管理】从整体上来看了系统中四个调用层面上的内存分配和释放,然后详细的介绍了这四个层面中的操作符/函数的使用以及背后的调用关系。在这一篇我们就从内存管理实现的基本点重载开始,看看C++给我们提供了哪些可供用户使用的内存管理接口。 应用程序的设计中,我们所说的内存管……

阅读全文

C++内存管理|02 内存操作相关函数

上一篇中从整体上来看系统中四个层面上内存的分配和释放,这样我们就对内存分配有了一个整体的认识。这一节则详细的来写写这四个层面中的操作符或函数的使用方法,以及他们背后的调用关系。首先我们从我们使用最多的new和delete来说起。 1. new 和 delete new 操作符有时候也有地方称他为new opera……

阅读全文

C++内存管理|01 分配和释放的四个层面

内存的使用是稍底层一些的程序,或者性能要求严格的程序都是非常有讲究的一块。从程序的分层设计的角度来看,一般有四个层面上内存的分配和释放可以共给我们开发人员使用。本篇就介绍这这个层面上内存分配相关的一些函数接口。 1. 站在高处思考 从一个比较高的角度来看,内存管理说到底就是使用OS提供的……

阅读全文