自定义new

C++ new 与 delete

可紊 提交于 2019-12-13 14:05:21
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> new与delete表达式作了什么 对于new来说 计算所需内存的字节数,然后以此为参数调用标准库的operator new(size_t)函数 在operator new()返回的内存上调用类的适当的构造函数初始化一个对象 将operator new() 返回的指针作为表达式的运算结果 也即 new 把内存分配与对象构造合在一起了 对于delete来说 调用指针所指对象的析够函数释放对象本身 调用标准库的operator delete()函数将指针所指内存返还给系统 也即 delete 把释放对象本身与释放对象所占的内存合在一起 new[] 与 delete[] 行为与上类似 allocator类 很多时候并不需要立即在分配的内存上初始化一个对象,与此同时也希望在释放内存之前不调用对象的析钩函数;allocator类提供了这种机制,其成员: allocator<T> a; /* a可以用来分配原始内存以及在原始内存上构造T类型对象 */ a.allocate(n); /* 分配原始的内存,可以保存n个Type类型的对象 */ a.deallocate(p,n);/* 释放p所指的原始内存,p必须合法;并且不会调用p所指对象的析钩函数,n表示p所指的内存可以保存n个T类型对象 */ a.construct(p