理解
dongzhiquan
吉大计算机毕业,南京,程序员.
展开
-
static静态变量的理解
static静态变量的理解静态变量 类型说明符是static。静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期间都不释放),也可以认为是其内存地址不变,直到整个程序运行结束(相反,而auto自动变量,即动态局部变量,属于动态存储类别,占动态存储空间,函数调用结转载 2009-07-21 17:26:00 · 2228 阅读 · 0 评论 -
静态链接库LIB和动态链接库DLL
lib静态链接转载 2010-07-22 17:23:00 · 1254 阅读 · 0 评论 -
通过lib对动态链接库DLL进行引用的项目,发布时DLL放置的位置
Windows将遵循下面的搜索顺序来定位DLL: 1.包含EXE文件的目录, 2.进程的当前工作目录, 3.Windows系统目录, 4.Windows目录, 5.列在Path环境变量中的一系列目录。转载 2010-07-21 20:45:00 · 690 阅读 · 0 评论 -
Windows服务程序的调试
摘自:MSDN 1.由于服务必须从服务控制管理器的上下文中运行,而不是从 Visual Studio 中运行,因此调试服务不像调试其他 Visual Studio 应用程序类型那样简单。若要调试服务,必须首先启动服务,然后将一个调试器附加到正在运行服务的进程中(AttachToProcess)。 附加到服务的进程使您能够调试大多数服务代码,但并非全部;例如,由于服务已经启动,因此不能用这种方法调试服务的 OnStart 方法中的代码,或调试用于加载服务的 Main 方法中的代码。(不断循环的那原创 2010-07-30 00:42:00 · 765 阅读 · 0 评论 -
在共享DLL中使用MFC和在静态库中使用MFC有什么区别
"在共享DLL中使用MFC"指的是打包时一些MFC的DLL的内容没有被硬编码到在EXE文件中,所以EXE会文件较小,但是运行时要求运行的系统环境中要有相关的DLL文件. "在静态库中使用MFC"是将DLL对应的lib静态库中的相关代码硬编码到EXE文件中,文件较大,但是可以在没有已经被包含DLL的机器上运行,当然即使如此也并非所有的DLL都会将其硬编码到Exe中,因此仍然某些DLL是必须的.比如Redistributable Package中的内容.转载 2010-07-31 15:10:00 · 914 阅读 · 0 评论 -
C++中头文件包含问题
<br /> 在一些大的工程中,可能会包含几十个基础类,免不了之间会互相引用 ( 不满足继承关系,而是组合关系 ) 。也就是需要互相声明。好了,这时候会带来一些混乱。如果处理得不好,会搞得一团糟,根据我的经验,简单谈谈自已的处理办法:<br />编码时,我们一般会尽量避免 include 头文件,而是采用声明 class XXX 。 但有时候还是必须用 Include 头文件,那么,两者的划分在于什么呢?<br />应该是很明确的,但书上好像都少有提及。<br />首先:<br />转载 2010-08-10 23:51:00 · 864 阅读 · 0 评论 -
关于VC2008编译出现错误“error C2664: ” 的处理方法:
在VC2008中编程如下: TempValue.Format("%d",m_CH1_Value); //TempValue为Cstring类型,m_CH1_Value为Int类型编译之后出现1>e:/project/cplus/control/control/controldlg.cpp(200) :error C2664: “void ATL::CStringT::Format(constwchar_t *,...)”: 不能将参数1 从“const ch转载 2010-08-12 23:35:00 · 3637 阅读 · 0 评论 -
堆与栈
<br />堆与栈比较<br />1.管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制;对于堆来说,释放工作由程序员控制,容易产生memory leak。<br />2.空间大小:一般来讲在32位系统下,堆内存可以达到4G的空间,从这个角度来看堆内存几乎是没有什么限制的。但是对于栈来讲,一般都是有一定的空间大小的,例如,在VC6下面,默认的栈空间大小是1M(好像是,记不清楚了)。当然,我们可以修改: <br /> 打开工程,依次操作菜单如下:Project->Setting->转载 2010-09-08 23:26:00 · 437 阅读 · 0 评论 -
对引用和指针使用以及函数返回引用和指针类型的理解
<br />#include "stdafx.h"<br />#include <iostream><br />using namespace std;<br />int globalJ =999;<br /> <br />//返回值<br />int test1()<br />{<br /> int j =1;<br /> cout<<"in test1(),[return value] the varaible j's address :"<<&j<<e转载 2011-01-26 23:32:00 · 805 阅读 · 0 评论 -
数组指针和数组引用的区别(是否能够限定数组大小、数组降价)
<br />template<class T><br />void func1(T &, T &) <br />{<br />}<br />template<class TT><br />void func2(TT, TT) <br />{<br />}<br />int main()<br />{<br /> int a[10], b[10], c[20];<br /><br /> func1(a, b); //OK, 数组引用<br />转载 2011-01-27 00:00:00 · 1376 阅读 · 0 评论 -
调试dll
1:把dll的项目直接放进带有exe启动的项目,引用,调试2:直接启动dll项目: 项目属性的“启动操作”里把调试模式该为程序,并在“启动应用程序”栏选取exe程序。 这样vs.studio会先把那个exe启动起来。当然那个exe如果调用了这个dll的话,在这里设置断点就没问题了。 比如,我提供了一个exe程序,里面有一大堆的处理,其中一个需要调用xx.dll。某开发者只有xx.dll的源码,没有exe的源码,但是又必须调试改dll源码。这时就可以使用这种方式来调试了。转载 2010-07-19 23:29:00 · 617 阅读 · 0 评论 -
对象变量与对象(VB.net)
1.对象变量与对象本身是不同的,对象变量代表了对象真实数据在内存中的地址,可以粗略认为对象变量就是内存地址.而对象则是存储对象所用的整块内存区域. 传值的参数本身是传递的变量被复制一份,但对于对象变量实际上是将其值(所代表对象的内存地址)复制一份,因此这并不意味着它所代表的对象也被复制一份.转载 2010-04-04 00:52:00 · 1213 阅读 · 0 评论 -
CMAP原理及其在MFC中的实现(MAP模板没有顺序遍历的功能)
会用CMap了,其他的基本也就会了,很容易理解。 映射表类(CMap)是MFC集合类中的一个模板类,也称作为“字典”,就像一种只有两列的表格,一列是关键字,一列是数据项,它们是一一对应的。关键字是唯一的,给出一个关键字,映射表类会很快找到对应的数据项。映射表的查找是以哈希表的方式进行的,因此在映射表中查找数值项的速度很快。举个例子来说吧,公司的所转载 2009-08-05 15:51:00 · 2842 阅读 · 0 评论 -
摩根定理
奥古斯都·德·摩根首先发现了在命题逻辑中存在着下面这些关系: 非(P 且 Q)=(非 P)或(非 Q) 非(P 或 Q)=(非 P)且(非 Q)德·摩根的发现影响了乔治·布尔从事的逻辑问题代数解法的研究,这巩固了德·摩根作为该规律的发现者的地位,尽管亚里士多德也曾注意到类似现象、且这也为古希腊与中世纪的逻辑学家熟知(引自Bocheński《形式逻辑历转载 2009-08-12 15:04:00 · 2873 阅读 · 0 评论 -
《c++程序调试实用手册》
开篇十个问题问题1 作为一个c/c++程序员,你的所有子程序代码都封装在函数体内,你知道还有其他类型的子程序否(与c/c++不同,许多语言还有另外一种类型的子程序成为过程)?问题2 你是否知道过程子程序和函数子程序之间的所有区别?问题3 你是否学习过如何解析一个表达式,考虑到操作符的优先级?问题4 你是否知道属于先行转载 2009-08-30 21:58:00 · 1125 阅读 · 0 评论 -
CoInitialize与CoInitializeEx,AfxOleInit()的不同 控制台程序中AfxOleInit失效原因
CoInitialize()和AfxOleInit()都是初始化COM库,可它们有什么不同呢 OLE是建立在COM之上的技术,层次比COM要高。AfxOleInit()调用的是OleInitialize(),而 OleInitialize()除了调用CoInitializeEx()来初始化COM库外,还进行一些其它的操作,这些操作对OLE应用来说是必须的,这些OLE应转载 2009-07-01 10:56:00 · 1999 阅读 · 0 评论 -
关于C++中的内联函数(inline)
在c++中,为了解决一些频繁调用的小函数大量消耗栈空间或者是叫栈内存的问题,特别的引入了inline修饰符,表示为内联函数。 可能说到这里,很多人还不明白什么是栈空间,其实栈空间就是指放置程序的局部数据也就是函数内数据的内存空间,在系统下,栈空间是有限的,如果频繁大量的使用就会造成因栈空间不足所造成的程序出错的问题,函数的死循环递归调用的最终结果就是导转载 2009-09-03 23:46:00 · 603 阅读 · 0 评论 -
关于Debug Release
关于Debug&Release在使用VC开发软件的过程中,正当要享受那种兴奋的时候突然发现:release与debug运行结果不一致,甚至出错,而release又不方便调试,真的是当头一棒啊,可是疼归疼,问题总要解决,下面将讲述一下我的几点经验,看看是不是其中之一:1. 变量。 大家都知道,debug跟release在初始化变量时所做的操作是不同的,debu原创 2009-09-07 22:38:00 · 729 阅读 · 0 评论 -
墨菲定理
作为一个程序员在桌面检查时,必须经常考虑到输入不可能的非正常数据,确定程序走向,所以程序员应该牢记墨菲法则 墨菲法则 墨菲定律(Murphys Law),亦称莫非定律、莫非定理、或摩菲定理,是西方世界常用的俚语。墨菲定律主要内容是:事情如果有变坏的可能,不管这种可能性有多小,它总会发生。比如你衣袋里有两把钥匙,一把是你房间的,一把是汽车的转载 2009-09-12 08:25:00 · 833 阅读 · 0 评论 -
即时调试(Just-in-timeDebugging) Visual Studio调试 断点中断程序的执行(断点指令)
VC中的Just-in-time调试,使用该调试模式应用程序可以再Visual C++开发环境之外运行知道发生一个错误.当遇到一个程序错误时,Just-in-time调试自动加载Visual C++ Debugger .要打开Just-in-time调试只需要修改Tools->Options->Just-in-time debugging选项即可(其实该选项所做的操作就是写了个注册表,原创 2009-09-18 23:08:00 · 2908 阅读 · 3 评论 -
◎Design Pattern: Abstract Factory 模式
◎Design Pattern: Abstract Factory 模式 我们平日走在步人街上都能看到很多专卖店,服装、珠宝等等;拿服装专卖店来说,一个专卖店里面肯定有好几个品牌的服装,比如Giordano、Baleno,这些品牌都是不同公司生产的。没人见个专卖店自己生产服装的吧,专卖店需要某个品牌的服装时,就去联系相应的厂家供货即可,具体的生产是由厂家去完成。转载 2009-10-13 13:46:00 · 544 阅读 · 0 评论 -
「System」「Local Service」「Network Service」
「System」「Local Service」「Network Service」执行程序时的区别「System」执行某些程序也会不正常 如:OpenOffice,因为system账户没有填写注册信息(由于system无用户界面所以无法进行与账户对应的用户信息的输入)所以system无法使用该软件 *个人总结,仅供参考原创 2009-12-18 10:04:00 · 576 阅读 · 0 评论 -
函数中变量的生存期和作用域
<br />C++中变量生存期与VB中大不相同,C++中非静态局部变量的生存周期仅限于其声明所在的块(即程序中对应的大括弧)中,在退出块时便会释放掉内存。<br />例:<br />class destruct<br />{<br />public:<br /> int mem;<br /> destruct()<br /> {<br /> mem = 0;<br /> }<br /><br /> ~destruct()<br原创 2011-01-26 23:35:00 · 1045 阅读 · 0 评论