C++
文章平均质量分 51
布鲁斯_陈
for dream to fight...
展开
-
【结构体】中构造函数初始化变量及函数的使用
// SOAP线程对象struct SoapThreadStrcut{HANDLE mSoapThread; // SOAP线程void* mSoapStruct;// SOAP对象指针SoapThreadStrcut(): mSoapThread(NULL), mSoapStruct(NULL){}~SoapThreadStrcut()原创 2014-12-18 15:44:09 · 1689 阅读 · 0 评论 -
枚举注册表子键
int CLogOp::GetWINLogFilePath(){HKEY hKey = NULL;wchar_t* pBasePath = L"SYSTEM\\CurrentControlSet\\services\\eventlog";if ( ERROR_SUCCESS != RegOpenKeyEx(HKEY_LOCAL_MACHINE, pBasePath, 0,原创 2015-04-29 14:24:12 · 763 阅读 · 0 评论 -
各数据类型占用的内存字节数、范围
VS下//类型 对齐方式(变量存放的起始地址相对于结构的起始地址的偏移量) char // 偏移量必须为sizeof(char)即1的倍数 范围:-128(-2^7) ~ 127(2^7 - 1)int // 偏移量必须为sizeof(int)即4的倍数 范围:-2147483648(-2^31) ~ 214748364原创 2015-04-14 14:49:53 · 1214 阅读 · 0 评论 -
重构代码的一个例子
概述:重构无止境,重构你的代码,精雕细琢,千锤百炼。 我相信不少人都有这种感觉:某天闲暇下来回顾整理以前所写的代码,发现很多地方写得都不够好,代码中竟然存在着如此之多的“坏味道”。这对于追求艺术的程序员来说是无法接受的。所以要重构代码。通过下面的例子,看看什么是代码重构:void PrintHello(){ CTextHandler s转载 2015-04-13 10:25:07 · 1324 阅读 · 0 评论 -
堆 和 栈的 区别(经典)
此文章虽然是面向C/C++程序员写得,但是对咱们Java程序员还是很有帮助的。 堆和栈的区别 一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序原创 2015-04-03 09:32:25 · 239 阅读 · 0 评论 -
C++内存对齐
一、什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数转载 2014-12-12 14:59:13 · 351 阅读 · 0 评论 -
C++ - 堆与栈
一、程序的内存分配栈区(stack)由编译器自动分配释放 ,存放函数的参数值,局部变量的值等,其操作方式类似于数据结构中的栈。堆区(heap)一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收,注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。二、申请方式栈由系统自动分配。堆需要程序员自己申请并指明大小。三、申请后系统的响应转载 2014-12-12 17:00:33 · 267 阅读 · 0 评论 -
C/C++中extern关键字详解
转载来自:http://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777431.htmlhttp://baike.baidu.com/view/963932.htm1 基本解释: extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模转载 2014-12-12 15:33:44 · 360 阅读 · 0 评论 -
C++ - new与malloc的区别
malloc是C++语言的标准库函数;而new是C++语言中的操作符。new返回指定类型的指针,并且可以自动计算所需空间的大小;而malloc必须要由用户自己计算所需空间大小,并在返回后强行转换为实际类型的指针。malloc只管内存分配,不能对所得的内存进行初始化,其所获内存空间中上的值是随机的;而new除了分配内存处,还会对对象做初始化。转载 2014-12-12 16:56:05 · 301 阅读 · 0 评论 -
非MFC工程使用MFC库小结
一般的非MFC工程可以在包含相关头文件后(如afx.h),就可以使用里面封装的类了。但是可能存在以下一些问题:1、afx.h中已经包含了windows.h头文件,但是在非MFC工程中,也包含了了windows.h,因此会提示报错。一般在stdafx.h中的windows.h注释掉,然后写上afx.h即可。2、部分宏重复定义,如默认DLL库的工程属性中的预处理器中,已经定义了宏_USRD原创 2014-12-22 16:17:25 · 1804 阅读 · 0 评论 -
C++标准转换运算符const_cast
前面讲了C++继承并扩展C语言的传统类型转换方式,最后留下了一些关于指针和引用上的转换问题,没有做详细地讲述。C++相比于C是一门面向对象的语言,面向对象最大的特点之一就是具有“多态性(Polymorphism)”。要想很好的使用多态性,就免不了要使用指针和引用,也免不了会碰到转换的问题,所以在这一篇,就把导师讲的以及在网上反复查阅了解的知识总结一下。C++提供了四个转换运算符:转载 2014-12-05 11:30:39 · 342 阅读 · 0 评论 -
enum操作
两篇介绍的博客:http://blog.csdn.net/learnerz/article/details/6395966http://blog.csdn.net/lbsjs/article/details/1788961. 枚举的定义枚举类型定义的一般形式为:enum 枚举名{ 枚举值表 }; 在枚举值表中应罗列出所有可用值。这些值也称为枚举元转载 2014-12-19 16:04:17 · 427 阅读 · 0 评论 -
CRegKey枚举子键
CRegKey Key;if ( ERROR_SUCCESS == Key.Open(HKEY_LOCAL_MACHINE, keyPath.c_str()) ){wchar_t subKeyName[MAX_PATH];DWORD dwLength = MAX_PATH;for(DWORD i = 0; Key.EnumKey(i, subKeyName, &dw原创 2014-12-19 09:24:19 · 1493 阅读 · 0 评论 -
CThread类
CThread类对线程操作进行了封装,简化了操作。具体内容后续有时间补上。原创 2014-12-18 11:42:16 · 1127 阅读 · 0 评论 -
map的insert操作范例(用value_type)
// 服务监视数据struct MoniterService{std::wstring mServiceName; // 服务名int mErrCount;// 错误计数MoniterService(): mErrCount(0){}};typedef std::map MonitorServiceMap;MonitorServiceMap mSer原创 2014-12-18 14:33:53 · 1532 阅读 · 0 评论 -
【示例】ShellExecuteEx起一个进程和SHGetValue读取注册表值
SHELLEXECUTEINFO info = {0};Sleep(1000);if ( NOERROR == SHGetValue(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{CB2A97B5-EAC2-40D1-82B2-80E1AB9C7997}_is1",原创 2015-01-07 09:35:21 · 1235 阅读 · 0 评论 -
ShellExecuteEx(&ShExecInfo) 和 WinExec
//SHELLEXECUTEINFO ShExecInfo = {0};//ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);//ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;////wchar_t wszFile[MAX_PATH] = L"C:\\test\\test.exe";//原创 2015-12-28 01:02:09 · 1160 阅读 · 0 评论