摘要: 原帖与示例代码地址:http://www.codeproject.com/KB/cpp/MemoryPool.aspx译者点评:一个简单的内存池实现,附有源码,简单易懂,适合入门。概述在c/c++中,内存分配(如malloc或new)会使用很多时间。一个程序会随着长时间的运行和内存的申请释放而变得越来越慢,内存也会随着时间逐渐碎片化。特别是高频率的进行小内存申请释放,此问题变得尤其严重。解决方案:定制内存池为解决上述问题,一个(可能的)的解决方案就是使用内存池。“内存池”在初始化时,分配一个大块内存(称 原始内存块),并且将此内存分割为一些小的内存块。当你需要请求分配内存时,则从内存池中取出事 阅读全文
posted @ 2012-04-27 17:50 笑笑小白 阅读(8508) 评论(0) 推荐(3)
摘要: 今天本来是问内存池的问题问着问着 就变成 原来我对 new和malloc的区别都没有整明白new 是相当于 malloc加上构造函数对话:ly 15:16:11 内存池的那一块 比如WEB 上面基本就是主要是 new HttpEventHandler 这个 要对这个 做一个内存池那可以这样设计吗?比如建一个list 保存 n个HttpEventHandler 一次性的new 这n个HttpEventHandler 然后来一个请求 就从队列中取一个 这种方式?xx15:17:04 你想问什么呢?你是想问怎么做,还是想问你这种想法可不可以?ly 15:20:00 这种方法可不可... 阅读全文
posted @ 2012-04-27 16:13 笑笑小白 阅读(341) 评论(0) 推荐(0)
摘要: 没有内存池的时候,你只是用new直接创建了一个对象,但是new的过程分为两步,首先是分配内存,然后是调用构造函数。内存池就只是负责内存的分配,有了内存池后,你再去创建对象时候,只需要先从内存池中取出内存,然后再在取出的内存上调用对象的构造函数,产生你需要的对象如何让new操作符不分配内存,只调用构造函数问题:c++中的new操作符 通常完成两个工作 分配内存及调用相应的构造出世核函数。请问:1)如何让new操作符不分配内存,只调用构造函数?2) 这样的用法有什么用?解答:(要求new显式调用构造函数,但不分配内存。)题目要求不能生成内存 还要调用构造函数 说明这个类里面没有对内部操作 但可以. 阅读全文
posted @ 2012-04-27 15:58 笑笑小白 阅读(7334) 评论(3) 推荐(0)
摘要: (所有示例的运行,将#序号所在main()函数去掉序号即可,参考[url]http://www.codeguru.com/cpp/cpp/cpp_mfc/stl/article.php/c15361/[/url])#1 #2get() 返回对象指针use_count() 返回对象的引用计数#3shared_ptr构造函数中,行参指定构造对象和析构对象的函数#4get() 返回对象指针,使用->调用成员函数#5get() 返回对象指针,if判断是否为null#6swap() 交换两个shared_ptr所指向的对象#7使用=赋值#8unique() 判断当前对象的引用计数==1?#9res 阅读全文
posted @ 2012-04-27 09:46 笑笑小白 阅读(5176) 评论(0) 推荐(0)