gdb 调试
摘要:一、gdb 调试-源代码关联 在调试程序的过程中,可以自由地查看相关的源代码(如果有源代码的话)是一项最基本的特性。gdb 当然也提供了这项特性,虽然不如IDE直观,但在一定程度上要比IDE更加灵活和快捷。gdb之所以能够知道对应的源代码,是因为调试版的可执行程序中记录了源代码的位置;因为源代码的位
阅读全文
posted @
2016-03-04 15:45
人间奇迹
阅读(3246)
推荐(0) 编辑
内联汇编
摘要:参考资料:1、Linux 中 x86 的内联汇编2、__asm__ __volatile__内嵌汇编用法简述3、第19章汇编与C之间的关系4、AT&T inline Assembly Constraint5、Assembler Instructions with C Expression Opera...
阅读全文
posted @
2015-07-25 19:28
人间奇迹
阅读(269)
推荐(0) 编辑
typedef 揭秘
摘要:typedef用来声明一个别名,typedef关键字后面是一个声明。语法上typedef属于存储类声明说明符一、引言 如果你理解typedef的简单形式: typedef int PARA; 这种形式跟#define int PARA几乎一样。 那么你是否也理解了如下的一些声明: t...
阅读全文
posted @
2015-05-08 17:13
人间奇迹
阅读(889)
推荐(1) 编辑
进程内存类型
摘要:内存类型内存类型描述VSS(Virtual Set Size)虚拟耗用内存。它是一个进程能访问的所有内存空间地址的大小。这个大小包含了一些没有驻留在RAM中的内存,就像mallocs已经被分配,但还没有写入。VSS很少用来测量程序的实际使用内存。RSS (Resident Set Size)实际使用...
阅读全文
posted @
2015-05-06 14:00
人间奇迹
阅读(738)
推荐(0) 编辑
linux文件权限表示及用户权限管理
摘要:UNIX/Linux下关于文件执行权限的表示和查看想必是最熟悉不过的,然而你是否真正了解用户文件的权限标识和用户的权限呢? 实际上文件权限标识不仅仅只有U, G, O11109876543210SUIDGUIDSBITRWX(S/s)RWX(S/s)RWX(S/s) 如上所示,linux中除...
阅读全文
posted @
2015-04-22 23:07
人间奇迹
阅读(4201)
推荐(0) 编辑
C++标准转换运算符
摘要:C++类型转换在实际编程中会经常使用,其实,本质上对象的类型用来解释(interpret)对象。因为,每个对象都占据一块内存空间,这块内存空间存放了一段二进制数据。通过标记该对象的类型,告诉如何看待这块二进制数据。而对象数据类型转换,就是将源类型解释的内存空间转换为目标类型来解释这块内存空间。传...
阅读全文
posted @
2015-04-13 13:25
人间奇迹
阅读(443)
推荐(0) 编辑
c/c++ 对象内存布局
摘要:一、对象内存查看工具 VS 编译器 CL 的一个编译选项可以查看 C++ 类的内存布局,非常有用。使用如下,从开始程序菜单找到 Visual Stdio 2012. 选择 VS 的命令行工具,按如下格式使用: >cl /d1reportSingleClassLayout[classname] t...
阅读全文
posted @
2015-04-13 00:24
人间奇迹
阅读(385)
推荐(0) 编辑
c++操作符重载
摘要:一、类型转换操作符(type conversion operator)[1]参考:[1].C++类型转换操作符(type conversion operator):http://www.cppblog.com/init/archive/2012/01/07/159281.html
阅读全文
posted @
2015-04-09 15:00
人间奇迹
阅读(255)
推荐(0) 编辑
C/C++ 右值引用 及 函数调用栈剖析
摘要:参考: [1].C/C++堆栈指引:http://www.cnblogs.com/Binhua-Liu/archive/2010/08/24/1803095.html [2]. C++临时变量的生命周期 :http://www.cnblogs.com/catch/p/3251937.html ...
阅读全文
posted @
2015-04-09 00:17
人间奇迹
阅读(594)
推荐(0) 编辑
C++模板
摘要:模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型。 模板是一种对类型进行参数化的工具,通常有两种形式:函数模板和类模板 (1)、函数模板针对仅参数类型不同的函数; (2)、类模板针对仅数据成员和成员函数类型
阅读全文
posted @
2015-04-04 00:17
人间奇迹
阅读(362)
推荐(0) 编辑
new 、operator new 和 placement new
摘要:一、原生operator new 我们先从原生operator new开始。考虑如下代码,它用来分配5个int型的空间并返回指向他们的指针[1]: int* v = static_cast<int*>(::operator new(5 * sizeof(*v))); 当像如上的调用,operator
阅读全文
posted @
2014-07-31 02:44
人间奇迹
阅读(416)
推荐(0) 编辑
动态链接库(dll) __declspec(dllimport) __declspec(dllexport)
摘要:一、__declspec(dllexport) Microsoft 在 Visual C++ 的 16 位编译器版本中引入了__export,使编译器得以自动生成导出名并将它们放到一个 .lib 文件中。然后,此 .lib 文件就可以像静态 .lib 那样用于与 DLL 链接。 在更新的编译器版本中,可以使用__declspec(dllexport)关键字从 DLL 导出数据、函数、类或类成员函数。__declspec(dllexport)会将导出指令添加到对象文件中,因此您不需要使用 .def 文件。 当试图导出 C++ 修饰函数名时,这种便利最明显。由于对名称修饰没有标准规范,因此导...
阅读全文
posted @
2013-10-28 19:09
人间奇迹
阅读(1450)
推荐(0) 编辑
重载(overload)、覆盖(override)、隐藏(hide) 详解
摘要:重载(overload)、覆盖(override)、隐藏(hide)这三个概念都是与OO中的多态有关系的。如果单是区别重载与覆盖这两个概念是比较容易的,但是隐藏这一概念却使问题变得有点复杂了。重载是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同。调用的时候根据函数的参数来区别不同的函数。覆盖(也叫重写)是指在派生类中重新对基类中的虚函数(注意是虚函数)重新实现。即函数名和参数都一样,只是函数的实现体不一样。隐藏是指派生类中的函数把基类中相同名字的函数屏蔽掉了。隐藏与另外两个概念表面上看来很像,很难区分,其实他们的关键区别就是在多态的实现上。什么叫多态?简单地说就是一个接口,多种实.
阅读全文
posted @
2013-04-15 11:35
人间奇迹
阅读(397)
推荐(0) 编辑
Linux时间操作(time、gettimeofday)
摘要:一、time函数 #include<time.h>time_ttime(time_t*calptr);返回距计算机元年的秒数一旦取得这种以秒计的很大的时间值后,通常要调用另一个时间函数将其变换为人们可读的时间和日期#include <time.h>//calendar time into a broken-down time expressed as UTCstruct tm *gmtime(const time_t *calptr);//converts the calendar time to the local time, taking into account
阅读全文
posted @
2013-04-14 14:07
人间奇迹
阅读(36774)
推荐(2) 编辑
最快速度找到内存泄漏
摘要:内存管理是C++程序员的痛。我的《内存管理变革》系列就是试图讨论更为有效的内存管理方式,以杜绝(或减少)内存泄漏,减轻C++程序员的负担。1. 确认是否存在内存泄漏 MFC程序如果检测到存在内存泄漏,退出程序的时候会在调试窗口提醒内存泄漏。例如:classCMyApp:publicCWinApp{public:BOOLInitApplication(){int*leak=newint[10];returnTRUE;}}; 产生的内存泄漏报告大体如下:Detectedmemoryleaks!Dumpingobjects->c:/work/test.cpp(186):{52}normalbl
阅读全文
posted @
2012-05-09 10:48
人间奇迹
阅读(486)
推荐(0) 编辑
gcc 使用中常用的参数及命令
摘要:1. 执行过程 虽然我们称Gcc是C语言的编译器,但使用gcc由C语言源代码文件生成可执行文件的过程不仅仅是编译的过程,而是要经历四个相互关联的步骤∶预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编(Assembly)和链接(Linking)。 命令gcc (1). 首先调用cpp进行预处理,在预处理过程中,对源代码文件中的文件包含(include)、预编译语句(如宏定义define等)进行分析。 (2). 接着调用cc1进行编译,这个阶段根据输入文件生成以.o为后缀的目标文件。 (3). 汇编过程是针对汇编语言的步骤,调用as进行工作,一般来讲...
阅读全文
posted @
2012-03-16 16:11
人间奇迹
阅读(8458)
推荐(1) 编辑
C & C++ 中值得注意的编译,链接,调试,错误及其原因
摘要:1. #define VaParameter_Macro(...) 编译环境: VC6.0 编译错误: error C2010: '.' : unexpected in macro formal parameter list 原因: 据查是因为VC6.0不支持可变参数的宏定义,VC6.0编译不能通过2.****.cpp 文件中有如下函数: void skf_drawText(Skf_Char* pcText, Skf_S16 x, Skf_S16 y, screenRectSt rect, colourSt colorst, Skf_S32 flag, Skf_U16 font
阅读全文
posted @
2012-03-07 17:58
人间奇迹
阅读(4454)
推荐(0) 编辑
字符编码知识:Unicode、UTF-8、ASCII、GB2312等编码 及 转换
摘要:1. ASCII码 在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从000000
阅读全文
posted @
2012-02-09 16:00
人间奇迹
阅读(1560)
推荐(0) 编辑
标准stdin stdout 重定向 及控制台创建
摘要:一般来说, "1>" 通常可以省略成 ">".即可以把如上命令写成: ls a.txt b.txt >file.out 2>file.err有了这些认识才能理解 "1>&2" 和 "2>&1".1>&2 正确返回值传递给2输出通道 &2表示2输出通道如果此处错写成 1>2, 就表示把1输出重定向到文...
阅读全文
posted @
2011-08-25 17:05
人间奇迹
阅读(5700)
推荐(0) 编辑
宏定义 VS 内联函数
摘要:--------------------------------------------------------------------------------------------------------- (一) 在C中,常用预处理语句#define来代替一个函数定义。例如: #define MAX(a,b) ((a)>(b)?(a):(b)) 该语句使得程序中每个出现 MAX(a,b) 的地方都被宏定义中后面的表达式((a)>(b)?(a):(b))所替换。 宏定义语句的书写格式有过分的讲究, MAX与括号之间不能有空格,所有的参数都要 放在括号里。尽管如此,它还是有麻烦:
阅读全文
posted @
2011-03-03 13:10
人间奇迹
阅读(1569)
推荐(0) 编辑