- 博客(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 163
原创 ET/LT模式区别
一、ET模式的文件描述符(fd): 当epoll_wait检测到fd上有事件发生并将此事件通知应用程序后,应用程序必须立即处理该事件,因为后续的epoll_wait调用将不再向应用程序通知这一事件。 epoll_wait只有在客户端第一次发数据是才会返回,以后即使缓冲区里还有数据,也不会返回了。epoll_wait是否返回,是看客户端是否发数据,客户端发数据...
2018-07-26 00:53:31 13830
原创 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 4171
原创 那些函数可以设为虚函数,那些函数不可以?
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 7104
原创 malloc/free和new/delete释放后的内存系统会马上回收吗?
用户 free 掉的内存并不是都会马上归还给系统,ptmalloc 会统一管理 heap 和 mmap 映射区域中的空闲的 chunk,当用户进行下一次分配请求时,ptmalloc 会首先试图在空闲的chunk 中挑选一块给用户,这样就避免了频繁的系统调用,降低了内存分配的开销。ptmalloc将相似大小的 chunk 用双向链表链接起来,这样的一个链表被称为一个 bin。P...
2018-07-24 10:35:32 6445 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 624
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人