侯捷C++内存管理
文章平均质量分 54
OarUyGnah
这个作者很懒,什么都没留下…
展开
-
侯捷 c++ 内存管理笔记 p24-p30
std::alloc 运行原理 16个指针一开始全为0 以后申请内存时优先看已申请为备用的(占备池)进行分配,RoundUp为追加量,,,累计申请量>>4 (/16)原创 2022-02-11 14:35:57 · 509 阅读 · 0 评论 -
侯捷 c++ 内存管理笔记 p16-p23
new handler 理解C++ new-handler机制 =default =delete C++中的 =default和=delete VC6 malloc 申请一块12字节大小的内存,vc6实际分配大小为0x40 (56),其中绿色的pad为填补所用 VC6标准分配器实现 BC5标准分配器实现 G2.9标准分配器实现 G2.9 std::alloc VS G4.9 __pool_alloc std::alloc 16条链表,都为指针,每条负责一种大小的内存,依次为8、16…16*8字原创 2022-02-06 19:03:12 · 811 阅读 · 0 评论 -
侯捷 c++ 内存管理笔记 p12-p15
per-class allocator version 1 Screen *p[N]声明p为一个指针数组,每个位置存放一个Screen * 然后for循环逐个分配内存 结果: 左面间隔8,为自身大小,没有上下所带的cookie(4字节) 右面为::opeartor new,间隔16=自身大小+上下携带cookie*2 version 2 此类加了union,内部使用了嵌入式指针(embedded pointer) 相关知识: union用法 嵌入式指针 union中包含一个struct和一个指针,大原创 2022-02-04 21:36:05 · 911 阅读 · 0 评论 -
侯捷 c++ 内存管理笔记 p7-p11
array new,array delete delete [] buf 调用析构函数,若为delete buf,则只会调用一次 此处int并没有析构函数,因此[]加不加是无所谓的 但如果放的是对象,且其析构函数是有意义的,则需要加[] placement new char *buf=new char[sizeof(Complex)*3]; //(buf) 括号内部即为operator new参数 Complex* pc=new(buf)Complex(1,2); ... delete [] buf;原创 2022-02-03 18:04:24 · 856 阅读 · 0 评论 -
侯捷 c++ 内存管理笔记 p1-p6
c++ memory primitives 四种内存使用方式 malloc(size_t size); new ClassName; 例: 在这里插入代码片 Complex *pc=new Complex(1,2);//调用普通new //编译器转为如下 Complex *pc; try{ void* mem=operator new(sizeof(Complex));//调用operator new(size_t size) pc=static_cast<Complex*>mem;原创 2022-02-02 19:52:22 · 656 阅读 · 0 评论