摘要:
摘要本文分析了Windows环境使用MFC调试内存泄露的技术,介绍了在Windows环境下用VC++查找,定位和消除内存泄露的方法技巧。关键词:VC++;CRT 调试堆函数;试探法。编译环境VC++6.0技术原理检测内存泄漏的主要工具是调试器和 CRT 调试堆函数。若要启用调试堆函数,请在程序中包括以下语句: #define CRTDBG_MAP_ALLOC#include <stdlib.h>#include <crtdbg.h>注意 #include 语句必须采用上文所示顺序。如果更改了顺序,所使用的函数可能无法正确工作。 通过包括 crtdbg.h,将 mallo 阅读全文
posted @ 2012-11-08 17:10
郑文亮
阅读(688)
评论(0)
推荐(0)
摘要:
VC 工程char* p = NULL;extern "C" _declspec(dllexport) char* _stdcall output_number(char* aa){ CString s = aa;s += "abcd";int nlen = s.GetLength();if(p != NULL){delete[] p;p = NULL;}p = new char[nlen + 1];p[nlen] = 0;memcpy(p,s.GetBuffer(0),s.GetLength());return p;} extern "C&q 阅读全文
posted @ 2012-11-08 17:09
郑文亮
阅读(1444)
评论(0)
推荐(1)
摘要:
怎么理解CString & 类型?在函数参数表中,列了一项是此类型,据说是引用。可以给个具体方法,示例么?由于子程序调用是栈传递参数,因此对参数的修改不会改变调用者传入的参数的值。如果要改变调用者的参数值C语言一般用指针。但指针使用起来不是很方便,可能不清楚指针的意义是传入输入缓冲区首地址,还是需要输出的参数值。C++使用引用用就让这一意义更清楚。比如bool WriteStringIntoStruct(const char* szSource, mystruct *StructInstance );前一个指针是要读取的内存首地址,后一个是要改变的结构的实例的指针。如果这个函数写成 b 阅读全文
posted @ 2012-11-08 13:52
郑文亮
阅读(2024)
评论(0)
推荐(1)
摘要:
<string>是C++标准库头文件,包含了拟容器class std::string的声明(不过class string事实上只是basic_string<char>的typedef),用于字符串操作。<cstring>是C标准库头文件<string.h>的C++标准库版本,包含了C风格字符串(NUL即'\0'结尾字符串)相关的一些类型和函数的声明,例如strcmp、strchr、strstr等。<cstring>和<string.h>的最大区别在于,其中声明的名称都是位于std命名空间中的,而不是后者的全 阅读全文
posted @ 2012-11-08 11:24
郑文亮
阅读(4273)
评论(0)
推荐(0)
摘要:
Cstring好像是MFC类库中的。string好像是C++ 标准库中的继续追问:那他们的作用是一样的吗?补充回答:是一样的,在不同的场合,各有各的优点。CString能与MFC类库的其他类,有机完美的结合起来。可以方便的使用MFC。其他答案(1)CString 是MFC或者ATL中的实现,string是C++标准库中的实现string和CString均是字符串模板类,string为标准模板类(STL)定义的字符串类,已经纳入C++标准之中; CString(typedef CStringT<TCHAR, StrTraitMFC<TCHAR>> CString)为Vis 阅读全文
posted @ 2012-11-08 11:22
郑文亮
阅读(1362)
评论(0)
推荐(1)
摘要:
这几天经常用到的,不如记下吧。这三种类型各有各的优点,比如CString比较灵活,是基于MFC常用的类型,安全性也最高,但可移植性最差。string是使用STL时必不可少的类型,所以是做工程时必须熟练掌握的;char*是从学习C语言开始就已经和我们形影不离的了,有许多API都是以char*作为参数输入的。所以熟练掌握三者之间的转换十分必要。以下我用简单的图示指出三者之间的关系,并以标号对应转换的方法。1 string to CStringCString.format("%s",string.c_str());2 CString to stringstring str(CSt 阅读全文
posted @ 2012-11-08 11:11
郑文亮
阅读(397)
评论(0)
推荐(0)
摘要:
作为C++标准不可缺少的一部分,STL应该是渗透在C++程序的角角落落里的。STL不是实验室里的宠儿,也不是程序员桌上的摆设,她的激动人心并非昙花一现。本教程旨在传播和普及STL的基础知识,若能借此机会为STL的推广做些力所能及的事情,到也是件让人愉快的事情。 1 初识STL:解答一些疑问 1.1 一个最关心的问题:什么是STL科学领域里所常用的基本数据结构和基本算法。为广大C++程序员们提供了一个可扩展的应用框架,高度体现了软件的可复用性。这种现象有些类似于Microsoft Visual C++中的MFC(Microsoft Foundation Class Library),或者是B.. 阅读全文
posted @ 2012-11-08 10:23
郑文亮
阅读(441)
评论(0)
推荐(0)
摘要:
C/C++指令 #undef ,#ifdef, #ifndef,#if的用法 收藏 #undef #undef 是在后面取消以前定义的宏定义 该指令的形式为 #undef 标识符 其中,标识符是一个宏名称。如果标识符当前没有被定义成一个宏名称,那么就会忽略该指令。 一旦定义预处理器标识符,它将保持已定义状态且在作用域内,直到程序结束或者使用#undef 指令取消定义。 在此程序中,我们将取消在先前程序中对预处理器的定义。 源代码: #define TRACE(x) #if DBG #undef TRACE #define TRACE(x) g_TraceCallbac... 阅读全文
posted @ 2012-11-08 09:28
郑文亮
阅读(1373)
评论(0)
推荐(0)
摘要:
malloc函数百科名片本词条主要介绍 malloc 函数Malloc 向系统申请分配指定size个字节的内存空间。返回类型是 void* 类型。void* 表示未确定类型的指针。C,C++规定,void* 类型可以强制转换为任何其它类型的指针。目录函数简介函数声明函数的工作机制举例说明编辑本段函数简介 原型:extern void *malloc(unsigned int num_bytes); 头文件:在TC2.0中可以用malloc.h或 alloc.h (注意:alloc.h 与 malloc.h 的内容是完全一致的),而在Visual C++6.0中可以用malloc.h或者st.. 阅读全文
posted @ 2012-11-08 09:24
郑文亮
阅读(8170)
评论(0)
推荐(0)
摘要:
sprintf函数的功能与printf函数的功能基本一样,只是它把结果输出到指定的字符串中了,看个例子就明白了:例:将"test 1 2"写入数组s中#include<stdio.h> int main(void) { char s[40];sprintf(s,"%s%d%c","test",1,'2'); /*第一个参数就是指向要写入的那个字符串的指针,剩下的就和printf()一样了你可以比较一下,这是向屏幕输入 printf("%s%d%c","test",1, 阅读全文
posted @ 2012-11-08 08:45
郑文亮
阅读(12822)
评论(1)
推荐(0)
浙公网安备 33010602011771号