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