C++
文章平均质量分 54
timewolf
这个作者很懒,什么都没留下…
展开
-
深刻剖析经典面试题之一:堆和栈的区别
堆(heap)和栈(stack)的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap)—一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区转载 2006-05-08 12:48:00 · 945 阅读 · 0 评论 -
字符串转换系列三:VARIANT、COleVariant 和_variant_t
三、VARIANT、COleVariant 和_variant_t 在OLE、ActiveX和COM中,VARIANT数据类型提供了一种非常有效的机制,由于它既包含了数据本身,也包含了数据的类型,因而它可以实现各种不同的自动化数据的传输。下面让我们来看看OAIDL.H文件中VARIANT定义的一个简化版:struct tagVARIANT { VARTYPE vt; union { sho转载 2006-07-11 14:21:00 · 11998 阅读 · 1 评论 -
字符串转换系列二:CString、CStringA 和 CStringW
二、CString、CStringA 和 CStringW Visual C++.NET中将CStringT作为ATL和MFC的共享的“一般”字符串类,它有CString、CStringA和CStringW三种形式,分别操作不同字符类型的字符串。这些字符类型是TCHAR、char和wchar_t。TCHAR在Unicode平台中等同于WCHAR(16位Unicode字符),在ANSI中等价于转载 2006-07-11 14:25:00 · 4742 阅读 · 5 评论 -
字符串转换系列四:CComBSTR和_bstr_t
四、CComBSTR和_bstr_t CComBSTR是对BSTR数据类型封装的一个ATL类,它的操作比较方便。例如:CComBSTR bstr1; bstr1 = "Bye"; // 直接赋值OLECHAR* str = OLESTR("ta ta"); // 长度为5的宽字符CComBSTR bstr2(wcslen(str)); // 定义长度为5wcscpy(bstr2.m_str, s转载 2006-07-11 14:26:00 · 1613 阅读 · 0 评论 -
字符串转换系列一:BSTR、LPSTR和LPWSTR
一、BSTR、LPSTR和LPWSTR 在Visual C++.NET的所有编程方式中,我们常常要用到这样的一些基本字符串类型,如BSTR、LPSTR和LPWSTR等。之所以出现类似上述的这些数据类型,是因为不同编程语言之间的数据交换以及对ANSI、Unicode和多字节字符集(MBCS)的支持。 那么什么是BSTR、LPSTR以及LPWSTR呢? BSTR(Basic STRing,Bas转载 2006-07-11 14:27:00 · 1778 阅读 · 0 评论 -
字符串转换系列五:BSTR、char*和CString转换
五、BSTR、char*和CString转换 (1) char*转换成CString 若将char*转换成CString,除了直接赋值外,还可使用CString::Format进行。例如:char chArray[] = "This is a test";char * p = "This is a test"; 或LPSTR p = "This is a test"; 或在已定义U转载 2006-07-11 14:28:00 · 1402 阅读 · 0 评论 -
Vc调试入门
概述调试是一个程序员最基本的技能,其重要性甚至超过学习一门语言。不会调试的程序员就意味着他即使会一门语言,却不能编制出任何好的软件。这里我简要的根据自己的经验列出调试中比较常用的技巧,希望对大家有用。本文约定,在选择菜单时,通过/表示分级菜单,例如File/Open表示顶级菜单File的子菜单Open。 设置为了调试一个程序,首先必须使程序中包含调试信息。一般情况下,一个从AppWiza转载 2006-07-11 14:30:00 · 1046 阅读 · 0 评论