C/C++语言
brucelee0224
这个作者很懒,什么都没留下…
展开
-
匈牙利命名规范
几年以前,Charles Simonyi(他后来成为微软的著名程序员)设计了一种以前缀为基础的命名方法,这种方法后来称为"匈牙利表示法"以记念他.他的思想是根据每个标识符所代表的含义给它一个前缀.微软后来采用了这个思想,给每个标识符一个前缀以说明它的数据类型.因此,整型变量的前缀是n,长整型变量是nl,字符型数组变量是ca,以及字符串(以空类型结尾的字符数组)以sz为前缀.这些名字可能会非常古怪.原创 2006-06-15 09:21:00 · 954 阅读 · 0 评论 -
windows进程中的内存结构
接触过编程的人都知道,高级语言都能通过变量名来访问内存中的数据。那么这些变量在内存中是如何存放的呢?程序又是如何使用这些变量的呢?下面就会对此进行深入的讨论。下文中的C语言代码如没有特别声明,默认都使用VC编译的release版。 首先,来了解一下 C 语言的变量是如何在内存分部的。C 语言有全局变量(Global)、本地变量(Local),静态变量(Static)、寄存器变量(Regeis转载 2009-09-15 14:02:00 · 451 阅读 · 0 评论 -
堆和栈的区别
一、预备知识-程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1. 常量区 — 常量字符串就是放在这里的,程序结束后由系统释放。2. 栈区(stack)— 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。3. 堆区(heap)— 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事转载 2009-09-15 14:00:00 · 420 阅读 · 0 评论 -
MFC的CString(VC6) 内存管理分析
CString 类是我们经常用到的类,所以有必要对它的内存管理模式分析一下.CString 内存管理的演变过程如下: VC5 单纯的使用new delete方法。 因为字符串操作需要频繁调整内存大小.而采用C++操作符 new 与 delete 是没有与realloc相应功能的。结果就是每一次的改变内存大小都需要额外 增加一次拷贝操作。转载 2009-08-26 15:35:00 · 687 阅读 · 0 评论 -
MFC的模块状态:从AfxGetApp()和AFX_MANAGE_STATE()看MFC的模块状态
Introduction当我们在用MFC编程的时候,我们经常用到AfxGetApp()来获得当前的CWinApp的Instance。看看MFC的源代码中AfxGetApp()的实现,你会发现AfxGetApp()的实现并不像一般情况下面那样直接:_AFXWIN_INLINE CWinApp* AFXAPI AfxGetApp() { return afxCurrentWin转载 2009-06-11 10:18:00 · 477 阅读 · 0 评论 -
C/C++内存分配
一. 在c中分为这几个存储区1.栈 - 由编译器自动分配释放2.堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收3.全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。- 程序结束释放4.另外还有一个专门放常量的地方。- 程序结束释放转载 2009-07-29 10:14:00 · 624 阅读 · 0 评论 -
基于vc6.0的DLL编程实现
一、前言 自从微软推出16位的windows操作系统起,此后每种版本的windows操作系统都非常依赖于动态链接库(dll)中的函数和数据,实际上windows操作系统中几乎所有的内容都由dll以一种或另外一种形式代表着,例如显示的字体和图标存储在gdi dll中、显示windows桌面和处理用户的输入所需要的代码被存储在一个user dll中、windows编程所需要的大量的api函数也被包转载 2009-01-15 14:43:00 · 657 阅读 · 0 评论 -
C++指针使用方法
在下列函数声明中,为什么要同时使用*和&符号?以及什么场合使用这种声明方式?void func1( MYCLASS *&pBuildingElement ); 论坛中经常有人问到这样的问题。 本文试图通过一些实际的指针使用经验来解释这个问题。 仔细看一下这种声明方式,确实有点让人迷惑。在某种意义上,"*"和"&"是意思相对的两个东西,把它们放在一起有什么意义呢?。为了理解转载 2008-07-18 13:45:00 · 357 阅读 · 0 评论 -
C++的底层机制
c++为我们所提供的各种存取控制仅仅是在编译阶段给我们的限制,也就是说是编译器确保了你在完成任务之前的正确行为,如果你的行为不正确,那么你休想构造出任何可执行程序来。 但如果真正到了产生可执行代码阶段,无论是c,c++,还是pascal,大家都一样,你认为c和c++编译器产生的机器代码会有所不同吗,你认为c++产生的机器代码会有访问限制吗?那么你错了。什么const,private,转载 2008-07-18 13:43:00 · 409 阅读 · 0 评论 -
C++得一些技巧
1.虚基类最有效的运用方式就是抽象虚基类2.如果CLASS的设计者把static data member 声明为 nonpublic, 这一直被视为是一种好的习惯.3.静态成员函数主要特性是没有this指针, 不能够直接存取非静态成员变量, 不能被声明为const, volatile, virtual, 它不需要经由class object才被调用--虽然大部分是这样被调用的.4.OO原创 2007-07-19 09:58:00 · 497 阅读 · 0 评论 -
C语言宏定义技巧
C语言宏定义技巧(常用宏定义) 写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性 等等。下面列举一些成熟软件中常用得宏定义。。。。。。 1,防止一个头文件被重复包含 #ifndef COMDEF_H #define COMDEF_H //头文件内容 #endif 2,重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型转载 2007-04-11 15:15:00 · 692 阅读 · 0 评论 -
C++多态技术
关键词 多态 继承 虚函数 模板 宏 函数重载 泛型编程 泛型模式 导言 多态(polymorphism)一词最初来源于希腊语polumorphos,含义是具有多种形式或形态的情形。在程序设计领域,一个广泛认可的定义是“一种将不同的特殊行为和单个泛化记号相关联的能力”。和纯粹的面向对象程序设计语言不同,C++中的多态有着更广泛的含义。除了常见的通过类继承和虚函数机制生效于运行期的动态多转载 2007-07-03 14:21:00 · 727 阅读 · 0 评论 -
windows异常处理剖析
1. 标准C++异常处理的基本语法和语义 这次,我来概述标准C++异常处理的基本语法和语义。顺便,我会将它和前两次提到的技术进行比较。(在本文及以后,我将标准C++异常处理简称为EH,将微软的方法称为SEH。)1.1 基本语法和语义 EH引入了3个新的C++语言关键字:l catchl throwl原创 2007-04-05 10:44:00 · 4621 阅读 · 0 评论 -
C++中的虚函数到底怎么实现的?
C++中的虚函数到底怎么实现的?在各种继承关系中,虚函数表的结构到底是什么样的?曾经我是很想当然,可是后来在使用ATL的过程中,我发现并不是我想的那样。大家知道,利用C++语言本身的特性进行COM编程当然是很方便的事,但是你就得随时随地都知道那虚函数表里头到底是些什么东西。讲C++语法的书没有义务告诉你C++产生的虚函数表是什么样的,这就是头痛的所在。 自已做试验是件很快乐的事,我很愿意转载 2007-01-24 10:49:00 · 1152 阅读 · 0 评论 -
成员函数指针——为什么那么复杂?
引子 标准C++中没有真正的面向对象的函数指针。这一点对C++来说是不幸的,因为面向对象的指针(也叫做“闭包(closure)”或“委托(delegate)”)在一些语言中已经证明了它宝贵的价值。在Delphi (Object Pascal)中,面向对象的函数指针是Borland可视化组建库(VCL,Visual Component Library)的基础。而在目前,C#使“委托”的概念日趋流行原创 2007-01-24 10:24:00 · 798 阅读 · 0 评论 -
ftp上传程序(C语言)
#include "sys/types.h"#include "sys/socket.h"#include "netinet/in.h"#include "arpa/inet.h"#include "fcntl.h"#include "unistd.h"#include "stdarg.h"#include "stdio.h"#include "netdb.h"int verbose = 1;FI转载 2007-03-12 16:18:00 · 3763 阅读 · 0 评论 -
C++ Traits
<br />Traits技术可以用来获得一个 类型 的相关信息的。 首先假如有以下一个泛型的迭代器类,其中类型参数 T 为迭代器所指向的类型:<br /><br />template <typename T><br />class myIterator<br />{<br /> ...<br />};<br /><br />当我们使用myIterator时,怎样才能获知它所指向的元素的类型呢?我们可以为这个类加入一个内嵌类型,像这样:<br />template <typename T><br />clas转载 2011-02-16 14:40:00 · 607 阅读 · 0 评论