2011年5月28日
摘要: static 的两大作用: 一、控制存储方式: static被引入以告知编译器,将变量存储在程序的静态存储区而非栈上空间。 1、引出原因:函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,大家知道,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想将函数中此变量的值保存至下一次调用时,如何实现? 最容易想到的方法是定义一个全局的变量,但定义为一个全局变量有许多缺点,最明显的缺点是破坏了此变量的访问范围(使得在此函数中定义的变量,不仅仅受此函数控制)。 2、 解决方案:因此C++ 中引入了static,用它来修饰变量,它能够指示编译器将此变量在程 阅读全文
posted @ 2011-05-28 12:41 一个人的天空@ 阅读(355) 评论(0) 推荐(0) 编辑
摘要: GetCurrWorkingDir(){CStringstrPath;GetCurrentDirectory(MAX_PATH,strPath.GetBuffer(MAX_PATH));strPath.ReleaseBuffer();returnstrPath;}CStringCPropertySampleApp::GetCurrWorkingDir(){CStringstrPath;TCHARszFull[_MAX_PATH];TCHARszDrive[_MAX_DRIVE];TCHARszDir[_MAX_DIR];::GetModuleFileName(NULL,szFull,sizeo 阅读全文
posted @ 2011-05-28 12:35 一个人的天空@ 阅读(301) 评论(0) 推荐(0) 编辑
摘要: 我们知道,MFC程序如果检测到存在内存泄漏,退出程序的时候会在调试窗口提醒内存泄漏。例如:class CMyApp : public CWinApp{public:BOOL InitApplication(){int* leak = new int[10];return TRUE;}};产生的内存泄漏报告大体如下:Detected memory leaks!Dumping objects ->c:worktest.cpp(186) : {52} normal block at 0x003C4410, 40 bytes long.Data: < > CD CD CD CD CD 阅读全文
posted @ 2011-05-28 12:29 一个人的天空@ 阅读(2259) 评论(0) 推荐(2) 编辑
摘要: 1#include <string>string str="12345";int b=atoi(str.c_str());2【转】C++ int,char,string,CString类型转换(整理总结)#include <string> //使用C++标准库的string类时using namespace std; //同上#include <sstream>#include <iostream>#include <stdlib.h> //要将string类和int类型直接转换最好有这些包含,//因为自己写一个转 阅读全文
posted @ 2011-05-28 12:26 一个人的天空@ 阅读(908) 评论(0) 推荐(0) 编辑
摘要: 不知道大家有没有碰到这种情况:VS调试控制台程序终止调试,但是程序的控制台还存在,而且这个控制台无法关闭。在任务管理器的应用程序中可以看到这个窗口,但在进程中却找不到。之后也无法关机和重启。只能靠强制关机。这个问题困扰了我很久,今天终于知道解决方法了,所以共享出来。原因是系统补丁KB978037与现有功能冲突,所以导致命令窗口无法关闭,并只能通过强制关机来关闭,卸载掉该补丁即可。可以参考http://blogs.msdn.com/b/debugger/archive/2010/03/11/help-my-console-windows-won-t-go-away.aspx 阅读全文
posted @ 2011-05-28 12:23 一个人的天空@ 阅读(487) 评论(0) 推荐(0) 编辑