自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 通用内存池

内存池(memory pool)是代替直接调用malloc/free、new/delete进行内存管理的常用方法,当我们申请内存空间时,首先到我们的内存池中查找合适的内存块,而不是直接向操作系统申请。是进程内存的管理方式之一优势:    1.效率高,不会频繁的从用户态切换到用户态,比malloc/free进行内存申请/释放的方式快;    2.不会产生或很少产生堆碎片(内碎片,外碎片);...

2018-07-27 15:42:37 183

原创 智能指针

    智能指针共分为4种,即boost库中的auto_ptr、scoped_ptr、shared_ptr、weak_ptr。 auto_ptr   C++98标准, C++11后不再使用了   智能指针目的:由于堆内存的申请和释放都由程序员自己管理,所以会出现这样的情况:申请的空间在函数结束时忘记释放,造成内存泄漏。所以智能指针的作用原理就是在函数结束时自动释放内存空间,不需要手动释放内...

2018-07-27 13:08:13 162

原创 ET/LT模式区别

一、ET模式的文件描述符(fd): 当epoll_wait检测到fd上有事件发生并将此事件通知应用程序后,应用程序必须立即处理该事件,因为后续的epoll_wait调用将不再向应用程序通知这一事件。 epoll_wait只有在客户端第一次发数据是才会返回,以后即使缓冲区里还有数据,也不会返回了。epoll_wait是否返回,是看客户端是否发数据,客户端发数据...

2018-07-26 00:53:31 13826

原创 typename关键字用法

1、在模板定义中,定义模板参数类型,表明模板参数是一个类型参数;这里,typename作用和class相同;              用法:template<typename T>   /    template<class T> 2、声明类型:告诉编译器value_type是个类型,而不是变量名;     eg:typename   Iterator::va...

2018-07-25 21:57:13 313

原创 malloc(0)和malloc(-1)

malloc(-1):       windows 上会崩溃             linux上  不会崩溃malloc(0):      windows       int*p=(int *)malloc(0) ;如果使用了这块内存eg:  *p=1;   再free(p) ;就会崩溃                                 linux上       mallo...

2018-07-25 19:03:25 4144

原创 那些函数可以设为虚函数,那些函数不可以?

     C++中的虚函数的作用主要是实现了多态的机制,关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。     虚函数设置条件:1、可以取地址(静多态,动多态,取地址)                                     2、必须依赖对象调用可以设置为虚函数的:            析构函数  普通的成员函数...

2018-07-24 17:39:52 1468

转载 MYSQL四种存储引擎的适用总结篇

如果要提供提交、回滚、崩溃恢复能力的事物安全(ACID兼容)能力,并要求实现并发控制,InnoDB是一个好的选择如果数据表主要用来插入和查询记录,则MyISAM引擎能提供较高的处理效率如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存中的Memory引擎,MySQL中使用该引擎作为临时表,存放查询的中间结果如果只有INSERT和SELECT操作,可以...

2018-07-24 12:55:13 803

原创 MYSQL存储引擎 特点及区别

1、MyISAM存储引擎: 表锁 | 叶子节点存放地址特点:磁盘上存储数据 不支持事务(ACID)、也不支持外键,支持全文索引,将数据和索引分离(可以把数据文件和索引文件放在不同目录,平均分配IO,获取更快的速度),blog和text列可以被索引优势是访问速度快,拥有较高的插入、查询速度适用于:对事务完整性没有 要求或者以select,inser...

2018-07-24 12:49:40 422

原创 malloc()到底如何申请内存空间?

 malloc()到底从哪里得到了内存空间?答案是从堆里面获得空间。也就是说函数返回的指针是指向堆里面的一块内存。      操作系统中有一个记录空闲内存地址的链表。当操作系统收到程序的申请时,就会遍历该链表,然后就寻找第一个空间大于所申请空间的堆结点,然后就将该结点从空闲结点链表中删除,并将该结点的空间分配给程序。     malloc函数的实质体现在,它有一个将可用的内存块连接为一...

2018-07-24 10:49:32 7092

原创 malloc/free和new/delete释放后的内存系统会马上回收吗?

         用户 free 掉的内存并不是都会马上归还给系统,ptmalloc 会统一管理 heap 和 mmap 映射区域中的空闲的 chunk,当用户进行下一次分配请求时,ptmalloc 会首先试图在空闲的chunk 中挑选一块给用户,这样就避免了频繁的系统调用,降低了内存分配的开销。ptmalloc将相似大小的 chunk 用双向链表链接起来,这样的一个链表被称为一个 bin。P...

2018-07-24 10:35:32 6437 3

原创 malloc/free 和new/delete区别

(1)、malloc和new都是在堆上开辟内存的,它们都可用于申请动态内存和释放内存。malloc开辟内存永远是通过free释放的;而new是单个元素内存,用delete,如果是new[]数组,则用delete[]来释放内存。另外, malloc不可以重载,new可以重载(2)、malloc只负责开辟内存,没有初始化功能,需要用户初始化;new不但开辟内存,还可以进行初始化,eg: i...

2018-07-24 10:14:38 622

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除