- 博客(23)
- 资源 (1)
- 收藏
- 关注
转载 内存管理学习(五)内存优化总结:ptmalloc、tcmalloc和jemalloc
概述需求系统的物理内存是有限的,而对内存的需求是变化的, 程序的动态性越强,内存管理就越重要,选择合适的内存管理算法会带来明显的性能提升。比如nginx, 它在每个连接accept后会malloc一块内存,作为整个连接生命周期内的内存池。 当HTTP请求到达的时候,又会malloc一块当前请求阶段的内存池, 因此对malloc的分配速度有一定的依赖关系。(而apache的内存池是有...
2019-08-17 15:56:14
592
转载 内存管理学习(四)【转载】
C++ STL (四) 分配器(讲的很粗糙,就是大概了解一下分配器的原理,过一阵子刷一下内存管理这门课补一补吧)2018年12月16日 00:36:45王小闹儿阅读数 1820版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.youkuaiyun.com/qq_29996285/article/detai...
2019-08-17 15:41:41
192
转载 内存管理学习(三)【转载】
VulkanSTL的内存管理SGI STL 的内存管理http://www.cnblogs.com/sld666666/archive/2010/07/01/1769448.html1. 好多废话 在分析完nginx的内存池之后,也想了解一下C++的内存管理,于是就很自然得想到STL。STL是一个重量级的作品,据说当时的出现,完全可以说得上是一个划时代意义的作品...
2019-08-17 15:35:08
190
转载 内存管理学习(二)c++ stl 内存池【转载】
STL内存池机制,使用双层级配置器。第一级採用malloc、free,第二级视情况採用不同策略。这样的机制从heap中要空间,能够解决内存碎片问题。1.内存申请流程图 简要流程图例如以下。2.第二级配置器说明 第二级配置器目的解决小型区块造成的内存碎片问题。 使用自由链表(free-list)技巧。主动将不论什么小额区块的内存需求量上调至8...
2019-08-17 15:23:27
288
转载 内存管理学习(一)简单实现一个固定大小的内存池【转载】
1.内存池的引入(1)内存池顾名思义就是存放内存的池子,直接分配一大块内存存起来,然后慢慢地切出来使用,用完了再还回到池子,后续还能再利用。(2)如果我们需要申请一块空间,我们一般都会动态开辟一块空间(new或malloc),它们两个的共同点就是在堆上去申请空间,当然也是有一定限制的。如果我们频繁的去申请释放空间,就会造成许多的内存碎片,内存的浪费也就产生了。如果...
2019-08-17 15:16:02
560
转载 c++ STL 学习(一): C++三种容器:list、vector和deque的区别【转载】
https://blog.youkuaiyun.com/pigofzhou/article/details/79485385在写C++程序的时候会发现STL是一个不错的东西,减少了代码量,使代码的复用率大大提高,减轻了程序猿的负担。还有一个就是容器,你会发现要是自己写一个链表、队列,或者是数组的时候,既要花时间还要操心怎么去维护,里面的指针啊,内存够不够用啊,长度问题,有没有可能溢出啊等等一系列的问题等...
2019-08-17 14:46:37
307
转载 Windows API学习(一)MapViewOfFile后一定要UnMapViewOfFile
MapViewOfFile返回的p是系统预留(reserve)的进程内的地址空间, 每Map一次,就预留一块地址,直到显式调用UnMapViewOfFile或进程结束(被操作系统资源回收)。 所以是的, 如果不取消映射, 迟早会没有足够的空间地址供预留。 具体你看参看一下MSDN或Jeffrey Richter写的Windows via C/C++一书, 其中提到:You must rememb
2017-03-17 19:16:25
6019
转载 C++学习(九)使用LargeAddressAware扩展程序内存地址空间
http://blog.youkuaiyun.com/lff0305/article/details/7613741一般情况下,无论在32位系统还是64位系统下,一个Win32用户进程可用的内存空间只有2GB少一点。那么,假设一个Win32程序内存不够用了,又不想(或者没办法)编译成X64的,怎么办呢,MS提供了一种方法,Linker中的LargeAddressAware参数。启用它,可以获得额外
2017-03-17 19:09:09
3260
转载 MFC学习(六)MFC ActiveX 控件:添加自定义事件
MFC ActiveX 控件:添加自定义事件自定义事件与常用事件的区别在于,自定义事件不由 COleControl 类自动引发。自定义事件将控件开发人员确定的某一操作识别为事件。自定义事件的事件映射项由EVENT_CUSTOM 宏表示。下一节实现用“ActiveX 控件向导”创建的 ActiveX 控件项目的自定义事件。使用“添加事件向导”添加自定义事件下列过程添加特定的自定义
2017-02-21 14:58:14
1265
转载 MFC学习(五)DDX_Control关联资源
DDX_Control函数管理着在对话框、表格视或控件视中被子类化的控件与对话框、表格视或控件视的CWnd数据成员之间的数据交换。其实说白了,就是将资源(如按钮)与类对象(CButton)关联在一起,也就是绑定起来。DDX_Control的使 用:在对话框类头文件中定义m_btnOK对象CButton m_btnOK;然后在DoDataExchange函数中添加以下语句
2017-02-21 14:55:25
22782
转载 MFC学习(四)ActiveX、OLE和 COM/DCOM概念
这阵子在想一个需要利用com组件的小程序怎么做,突然想起上次去面试的时候考官问过autocad开发时为什么要利用com,而不采用一般的dll呢? 到google上查了一下,许多人也问了一样的问题:) 用com来写程序要比普通的dll麻烦一些,但是带来的好处也大很多,尤其是在开发像autocad这样大型软件的时候,需要跨区域来协同工作。“学习COM,首先要知道COM的目的是什
2017-02-20 18:32:03
1660
转载 MFC学习(三)c++ ActiveX基础:使用VS2010创建MFC ActiveX工程项目
1.ActiveX的基本概念 ActiveX控件可以看作是一个极小的服务器应用程序,它不能独立运行,必须嵌入到某个容器程序中,与该容器一起运行。这个容器包括WEB网页,应用程序窗体等。。。 ActiveX控件的后缀名是OCX或者DLL。一般是以OCX和动态库共存的形式打包成cab或者exe的文件放在服务器上,客户端下载后运行安装cab或exe解压成OCX和动
2017-02-20 18:27:00
472
原创 MFC 学习(二) 创建activex project 时error prj0050 的处理
工程设置的问题,VS2005建的STL工程中默认的设置是:配置属性->链接器->常规->注册输出:是改为:配置属性->链接器->常规->注册输出:否OK。
2017-01-20 20:15:24
375
原创 C++学习(九):stringstream
库定义了三种类:istringstream、ostringstream和stringstream,分别用来进行流的输入、输出和输入输出操作。 1.stringstream::str(); returns a string object with a copy of the current contents of the stream. 2.stringstream::str (cons
2017-01-18 20:47:51
330
转载 C++学习(八):Visual studio 2005 C++ MSXML使用示例
#include "stdafx.h"#include #include void parserxml() { HRESULT hr = NULL; VARIANT var; V_VT(&var) = VT_BSTR; // COM库初始化 CoInitialize(NULL); //
2017-01-14 14:02:15
703
原创 c++学习(七):宏定义函数与内联函数
a.宏定义函数:优点:提高了程序的可读性,同时也方便进行修改;提高程序的运行效率:使用带参的宏定义既可完成函数调用的功能,又能避免函数的出栈与入栈操作,减少系统开销,提高运行效率;缺点:由于是直接嵌入的,所以代码可能相对多一点;嵌套定义过多可能会影响程序的可读性,而且很容易出错;对带参的宏而言,由于是直接替换,并不会检查参数是否合法,存在安全隐患。不能deb
2016-12-24 17:07:24
468
原创 C++学习(六):函数模板&函数模板
相对于类模板来说,工作中用到函数模板更多一些。(1)函数模板template T* newT(int size){ if (size>0) { T* test = new T[size]; return test; } else { return NULL; }}
2016-12-24 16:02:18
394
转载 MFC学习(一):MFC的消息循环 --讲解到位
MFC的消息循环 --讲解到位(http://blog.sina.com.cn/s/blog_a2aa00d70101im9b.html) MFC的消息循环 消息分为队列消息(进入线程的消息队列)和非队列消息(不进入线程的消息队列)。对于队列消息,最常见的是鼠标和键盘触发的消息,例如WM_MOUSERMOVE,WM_C
2016-12-14 21:08:40
6239
原创 c++学习(四):数组作为函数input
1.一维数组作为function input.nt _tmain(int argc, _TCHAR* argv[]){ double myresult[5]; getresult(myresult, 5); return 0;}int getresult(double myresult[], int size1){for(int i=0
2016-12-03 13:12:54
1182
原创 c++学习(三):如何用指针传递
如何通过函数调用传递指针 :1. 指针作为input. 此种情况下,myresult 必须是一个已经new 出来的指针。这样该指针才指向合理的内存空间。在被调用函数中,对myresult指向的内容做修改。int _tmain(int argc, _TCHAR* argv[]){ double *myresult = NULL; myresult = ne
2016-11-22 20:37:26
680
原创 c++学习(二):传值与传址
什么是传值,什么是传址?网上答案五花八门。今天做一下简单的实验。1.传值:int _tmain(int argc, _TCHAR* argv[]){ int x = 2; int y = 3; swap1(x, y); x; y; return 0;}void swap1(int a, int b) {
2016-11-22 19:16:21
294
原创 c++学习(一):string/char[]/char* 是不是以'\0'结尾
从事C++编程已经三年有余,至今仍有一些基础性的知识不是很清楚。工作学习之余,做一下总结。问题提出: 工作中经常遇到 int paramname_offset = strlen( param_name.c_str() ) + 1; CopyMemory((char*)pBuf, param_name.c_str(), param
2016-11-22 18:57:58
12489
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人