C++内存管理
文章平均质量分 69
INGNIGHT
这个作者很懒,什么都没留下…
展开
-
boost::intrusive_ptr的用法
链接:https://www.jianshu.com/p/dd9701219b27。商业转载请联系作者获得授权,非商业转载请注明出处。作者:JasonLiThirty。原创 2024-01-30 23:29:48 · 537 阅读 · 0 评论 -
malloc Memory Allocators 101 - Write a simple memory allocator
【代码】Memory Allocators 101 - Write a simple memory allocator。原创 2023-08-15 23:51:55 · 228 阅读 · 0 评论 -
内存池/对象池设计与实现
2.栈,使用最近归还的对象,进行对象池对象分配。1.new 重载placement new。3.静态对象需要在类外进行初始化。原创 2023-08-07 16:10:43 · 238 阅读 · 0 评论 -
Google Perf Tools安装以及使用
Google Performance Tools安装以及使用这边文章都记录在github:https://github.com/NIGHTFIGHTING/gperftools-tutorial一个优化的内存管理算法—tcmalloc性能优于malloc。一个用于CPU profile的工具,用于检测程序的性能热点,这个功能和gprof类似。一个用于堆检查工具,用于检测程序在是够有内存泄露...原创 2020-03-09 00:40:47 · 2213 阅读 · 0 评论 -
简单的自定义内存分配器
#include #include #include #include #include #include using namespace std;namespace liuqi {templateinline T* _allocate(ptrdiff_t size, T*) { set_new_handler(0); T* tmp = (T*)(::operator原创 2017-06-11 14:17:16 · 1034 阅读 · 0 评论 -
仿函数适配器(mem_fun/mem_fun_ref)
1.mem_fun和mem_fun_ref 1.用来适配对象的成员函数 2.对于函数f以及对象obj,在obj上调用f的形式有3种: (1)f(obj); //f是全局函数(非obj成员函数) (2)obj.f(); //f是obj的成员函数,obj是非指针 (3)obj->f(); ////f是obj的成员函数,obj是指针原创 2017-06-09 10:29:19 · 536 阅读 · 0 评论 -
G4.9pool alloc用例
#include #include #include using namespace std;templatevoid cookie_test(Alloc alloc, size_t n) { typename Alloc::value_type *p1,*p2,*p3; p1 = alloc.allocate(n); p2 = alloc.allocate(n); p3 =原创 2017-05-28 16:35:13 · 570 阅读 · 0 评论 -
11.重载示例(下)
1.重载new()/delete() 我们可以重载class member operator new(),写出很多版本,前提是每一版本的声明都必须有独特的参数列表,其中第一个参数必须是size_t,其与参数以new所指定的placement arguments为初值。出现于new(......)小括号内的便是所谓placement arguments。 Foo* pf = new原创 2017-05-27 19:03:47 · 340 阅读 · 0 评论 -
Per-class allocator 2
#include #include using namespace std;//ref. Effective C++ 2e,item 10//1.malloc效率//2.cookie管理//per-class allocator,2class Airplane {private: struct AirplaneRep { unsigned long miles;原创 2017-05-27 21:58:20 · 468 阅读 · 0 评论 -
Per-class allocator 1
#include #include using namespace std;//ref. C++Primer 3/e.p.765//1.malloc效率//2.cookie管理//per-class allocatorclass Screen {public: Screen(int x): i(x) { } int get() { return i; }原创 2017-05-27 20:32:09 · 539 阅读 · 0 评论 -
Static allocator 3
当你受困于必须为不同的classes冲洗一遍几乎相同的member operator new 和 member operator delete时,应该有方法将一个总是分配特定尺寸之品魁的memory allocator概念包装起来,使它容易被重复使用。以下展示一种作法,每个allocator onjec都是个分配器,它体内维护一个free-lists:不同allocator objects维护不同原创 2017-05-28 00:14:30 · 423 阅读 · 0 评论 -
Macro for static allocator 4
macro.h#include using namespace std;#ifndef _MACRO_H_#define _MACRO_H_namespace liuqi {class allocator {private: struct obj { struct obj* next; //embedded pointer };public: void* alloc原创 2017-05-28 12:08:09 · 416 阅读 · 0 评论 -
New Handler
1.new handler (1)当operator new 没能力为你分配出你所申请的memory,会抛一个std::bad_alloc exception。某些老编译器则是返回0---你仍然可以令编译器那么做: new (nothrow) Foo; 此为nothrow形式。 (2)抛出exception之前会先(不止一次)原创 2017-05-28 13:14:38 · 606 阅读 · 0 评论 -
G2.9 std_alloc
1.G2.9 std::alloc运行模式 (1) 每个链表都是20*2,20个切割好,其余的20个作为战备池 (2)分配的范围在8K~128K。 2.embedded pointers (1)当客户段使用小区快,获得的既是char*(指向某个union obj)。此时虽然客户端没有诸如LString或ZString之类的信息可得知区块大小,但由于区块是给obj原创 2017-05-29 19:22:33 · 629 阅读 · 0 评论 -
G2.9 std_alloc源码剖析
1.alloc类介绍template class __default_alloc_template {private:// Really we should use static const int x = N//实际上应该使用 static const int x = N// instead of enum { x = N }, but few compilers a原创 2017-05-29 21:50:25 · 684 阅读 · 0 评论 -
10.重载示例(上)
#include #include using namespace std;class Foo {public: int _id; long _data; string _str;public: Foo():_id(0) { cout << "default ctor. this=" << this << " id=" << _id << endl; } Foo(i原创 2017-05-27 16:10:26 · 334 阅读 · 0 评论