
C/C++
zhenyonghou
我的github:
https://zhenyonghou.github.io
展开
-
重载全局new/delete实现内存检测
<br />下面介绍用重载new/delete运算符的方式来实现一个简单的内存泄露检测工具,基本思想是重载全局new/delete运算符,被检测代码调用new和delete运算符时就会调用重载过的operator new和operator delete,在重载的operator new里和operator delete里记录下内存申请和释放信息,从而判断内存使用情况。<br />下面一步步介绍它的实现!<br />1、 全局new/delete的重载<br />先看一下重载new/delete的规则:<b原创 2010-10-18 17:38:00 · 12573 阅读 · 5 评论 -
C++11新特性学习笔记
最近学习了C++11的新特性,将学习内容整理下来以巩固记忆,C++11的新特性,可以分为两部分,第一部分是C++11核心语言的特性,第二部分是STL标准库的新特性。学习C++11主要参考了wiki上的一篇文章,在介绍右值引用的时候还参考了MSDN上一篇文章,由于这两篇文章写的时间比较早,和实际有些出入,我写文章时开发环境是win8,vs2012,很多C++11特性还没支持,所以我只整理了vs201原创 2012-12-08 23:05:39 · 18711 阅读 · 5 评论 -
解读boost库的unspecified_bool_type
在boost的智能指针(包括scoped_ptr,scoped_array,shared_ptr,shared_array)里,会看到每个类都有一个成员函数(就称其为函数吧)operator unspecified_bool_type() const,而且是public的,如果你看过源码,也许会产生如何使用的困惑,下面贴出源码。 typedef T * this_type::*unspe原创 2012-10-08 18:39:54 · 3035 阅读 · 0 评论 -
c++避免delete不完整类型 --checked_delete
在C++中,delete一个类型不完整的类对象的指针,编译器会发出警告,不幸的是,程序员有时候会忽略这种警告。在下面的例子中,main函数里new了一个类指针,调用delete_obj函数delete企图这个指针,delete_obj函数定义在del.h文件中,然而delete_obj函数只能“看见”Object类的声明,不能“看见”其定义。运行的结果发现Object析构没被调用。// f原创 2012-07-23 23:10:10 · 4012 阅读 · 0 评论 -
C语言可变参数的函数实现
在C语言中,有一种参数个数、类型不固定的函数,称之为变参函数,比如常用的printf函数。当我们在输出log信息时,也希望能写一个变参函数作为接口。这里介绍下如何写变参函数。 一、参数宏先来看几个设计变参函数要用到的几个宏,这几个宏定义在stdarg.h文件中。typedef char * va_list;#define va_start(ap,v) ( ap原创 2011-03-15 23:17:00 · 4814 阅读 · 1 评论 -
指向函数的指针(二)
上一篇介绍了函数指针的基本用法,本篇看一下函数指针的应用。很多时候遇到的都是C函数的callback,下面示例展示C++中使用callback。模板类,该类拥有2个成员,一个是对象指针,一个是成员函数,成员函数必须无参,无返回值。struct CallbackAction { virtual void Execute() = 0; virtual ~CallbackAc原创 2012-06-12 22:48:35 · 1503 阅读 · 0 评论 -
指向函数的指针(一)
之所以想写一篇函数指针的文章,源于函数指针在C/C++编程中使用的广泛性,而对于一些初级编程者来说对函数指针的使用或许有些迷惑,而一旦在适当的时候使用了函数指针,会使代码简洁有力。本篇介绍的是函数指针的基础部分,函数指针复杂的应用将在下一篇介绍。一 指向普通函数的指针先来看一个函数:int Sum(int a, int b){ return a + b;}这个函数,调用原创 2012-04-16 00:08:03 · 26167 阅读 · 5 评论 -
c++公共常量定义方式的比较
我们常在公共头文件中定义一些常量,定义常量方法如下:方法1commdef.h(公共头文件):const int constname = XXX;在使用该变量的地方加入 #include "commdef.h"方法2commdef.h(公共头文件):extern const int constname;commdef.cpp文件:const int constna原创 2012-07-02 22:55:56 · 4995 阅读 · 1 评论