自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 资源 (1)
  • 收藏
  • 关注

转载 内存管理学习(五)内存优化总结:ptmalloc、tcmalloc和jemalloc

概述需求系统的物理内存是有限的,而对内存的需求是变化的, 程序的动态性越强,内存管理就越重要,选择合适的内存管理算法会带来明显的性能提升。比如nginx, 它在每个连接accept后会malloc一块内存,作为整个连接生命周期内的内存池。 当HTTP请求到达的时候,又会malloc一块当前请求阶段的内存池, 因此对malloc的分配速度有一定的依赖关系。(而apache的内存池是有...

2019-08-17 15:56:14 532

转载 内存管理学习(四)【转载】

C++ STL (四) 分配器(讲的很粗糙,就是大概了解一下分配器的原理,过一阵子刷一下内存管理这门课补一补吧)2018年12月16日 00:36:45王小闹儿阅读数 1820版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/qq_29996285/article/detai...

2019-08-17 15:41:41 157

转载 内存管理学习(三)【转载】

VulkanSTL的内存管理SGI STL 的内存管理http://www.cnblogs.com/sld666666/archive/2010/07/01/1769448.html1. 好多废话 在分析完nginx的内存池之后,也想了解一下C++的内存管理,于是就很自然得想到STL。STL是一个重量级的作品,据说当时的出现,完全可以说得上是一个划时代意义的作品...

2019-08-17 15:35:08 154

转载 内存管理学习(二)c++ stl 内存池【转载】

STL内存池机制,使用双层级配置器。第一级採用malloc、free,第二级视情况採用不同策略。这样的机制从heap中要空间,能够解决内存碎片问题。1.内存申请流程图 简要流程图例如以下。2.第二级配置器说明 第二级配置器目的解决小型区块造成的内存碎片问题。 使用自由链表(free-list)技巧。主动将不论什么小额区块的内存需求量上调至8...

2019-08-17 15:23:27 257

转载 内存管理学习(一)简单实现一个固定大小的内存池【转载】

1.内存池的引入(1)内存池顾名思义就是存放内存的池子,直接分配一大块内存存起来,然后慢慢地切出来使用,用完了再还回到池子,后续还能再利用。(2)如果我们需要申请一块空间,我们一般都会动态开辟一块空间(new或malloc),它们两个的共同点就是在堆上去申请空间,当然也是有一定限制的。如果我们频繁的去申请释放空间,就会造成许多的内存碎片,内存的浪费也就产生了。如果...

2019-08-17 15:16:02 489

转载 c++ STL 学习(一): C++三种容器:list、vector和deque的区别【转载】

https://blog.csdn.net/pigofzhou/article/details/79485385在写C++程序的时候会发现STL是一个不错的东西,减少了代码量,使代码的复用率大大提高,减轻了程序猿的负担。还有一个就是容器,你会发现要是自己写一个链表、队列,或者是数组的时候,既要花时间还要操心怎么去维护,里面的指针啊,内存够不够用啊,长度问题,有没有可能溢出啊等等一系列的问题等...

2019-08-17 14:46:37 262

转载 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 5781

转载 C++学习(九)使用LargeAddressAware扩展程序内存地址空间

http://blog.csdn.net/lff0305/article/details/7613741一般情况下,无论在32位系统还是64位系统下,一个Win32用户进程可用的内存空间只有2GB少一点。那么,假设一个Win32程序内存不够用了,又不想(或者没办法)编译成X64的,怎么办呢,MS提供了一种方法,Linker中的LargeAddressAware参数。启用它,可以获得额外

2017-03-17 19:09:09 2962

转载 MFC学习(六)MFC ActiveX 控件:添加自定义事件

MFC ActiveX 控件:添加自定义事件自定义事件与常用事件的区别在于,自定义事件不由 COleControl 类自动引发。自定义事件将控件开发人员确定的某一操作识别为事件。自定义事件的事件映射项由EVENT_CUSTOM 宏表示。下一节实现用“ActiveX 控件向导”创建的 ActiveX 控件项目的自定义事件。使用“添加事件向导”添加自定义事件下列过程添加特定的自定义

2017-02-21 14:58:14 1140

转载 MFC学习(五)DDX_Control关联资源

DDX_Control函数管理着在对话框、表格视或控件视中被子类化的控件与对话框、表格视或控件视的CWnd数据成员之间的数据交换。其实说白了,就是将资源(如按钮)与类对象(CButton)关联在一起,也就是绑定起来。DDX_Control的使 用:在对话框类头文件中定义m_btnOK对象CButton m_btnOK;然后在DoDataExchange函数中添加以下语句

2017-02-21 14:55:25 21772

转载 MFC学习(四)ActiveX、OLE和 COM/DCOM概念

这阵子在想一个需要利用com组件的小程序怎么做,突然想起上次去面试的时候考官问过autocad开发时为什么要利用com,而不采用一般的dll呢?     到google上查了一下,许多人也问了一样的问题:)     用com来写程序要比普通的dll麻烦一些,但是带来的好处也大很多,尤其是在开发像autocad这样大型软件的时候,需要跨区域来协同工作。“学习COM,首先要知道COM的目的是什

2017-02-20 18:32:03 1529

转载 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 420

原创 MFC 学习(二) 创建activex project 时error prj0050 的处理

工程设置的问题,VS2005建的STL工程中默认的设置是:配置属性->链接器->常规->注册输出:是改为:配置属性->链接器->常规->注册输出:否OK。

2017-01-20 20:15:24 339

原创 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 302

转载 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 640

原创 c++学习(七):宏定义函数与内联函数

a.宏定义函数:优点:提高了程序的可读性,同时也方便进行修改;提高程序的运行效率:使用带参的宏定义既可完成函数调用的功能,又能避免函数的出栈与入栈操作,减少系统开销,提高运行效率;缺点:由于是直接嵌入的,所以代码可能相对多一点;嵌套定义过多可能会影响程序的可读性,而且很容易出错;对带参的宏而言,由于是直接替换,并不会检查参数是否合法,存在安全隐患。不能deb

2016-12-24 17:07:24 401

原创 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 340

转载 MFC学习(一):MFC的消息循环 --讲解到位

MFC的消息循环  --讲解到位(http://blog.sina.com.cn/s/blog_a2aa00d70101im9b.html)  MFC的消息循环         消息分为队列消息(进入线程的消息队列)和非队列消息(不进入线程的消息队列)。对于队列消息,最常见的是鼠标和键盘触发的消息,例如WM_MOUSERMOVE,WM_C

2016-12-14 21:08:40 5748 1

原创 c++学习(五):new char[]的赋值

1.strcpy2.memcpy3.不能直接赋值为字符串常量。

2016-12-03 13:48:07 15265

原创 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 1142

原创 c++学习(三):如何用指针传递

如何通过函数调用传递指针 :1. 指针作为input. 此种情况下,myresult 必须是一个已经new 出来的指针。这样该指针才指向合理的内存空间。在被调用函数中,对myresult指向的内容做修改。int _tmain(int argc, _TCHAR* argv[]){    double *myresult = NULL;    myresult = ne

2016-11-22 20:37:26 622

原创 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 264

原创 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 11748 4

空空如也

空空如也

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

TA关注的人

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