首页 > TAG信息列表 > freeStore
C++内存管理:内存池实现
示例1:在类中提前分配一块连续的内存池,减少cookie(分配内存时产生的头尾共8个字节,用于记录分配了多少内存)对内存的消耗 class Screen { public: Screen(int x) : i(x) {} int getData() { return i; } void* operator new(size_t); void operator delete(void*, size_t); privC++内存管理总结
为什么要进行内存管理? 用malloc申请的内存中会保存此次申请的大小及相关调试cookie,这些信息在连续申请内存时是多余的,因为申请的每个对象的内存大小都一样;malloc会调用系统调用向操作系统申请内存,这涉及到上下文切换。所以我们内存管理的目的: 尽量减少malloc的次数减少申请的C++小型内存池实现
class Foo { public: Foo(int x) : id(x) {} int getId() {return id;} ~Foo() {} void *operator new(size_t sizes) { Foo *p; if(!freeStore) { //linkList is empty size_t num = FooNum * sizes;