VC++
文章平均质量分 81
starxhong
毕业于华中科技大学,具有模式识别与智能系统硕士学位,现从业于广告智能推荐领域。
展开
-
VC++6_0调试篇:变量的观察--watch窗口的技巧
写一下VC6的watch窗口的一些小技巧,对于调试过程是非常有帮助的。VC6年纪已经很大了,微软好像也不再支持,但是还是有很多人在用。我本人是非常喜欢它的小巧(相对vs2003,2005),占资源少,即使这样它的调试功能仍然超级强,真是不错。 好,废话到此结束,下面贴代码来说明: #include #include class AutoExpa转载 2015-09-24 21:25:46 · 1785 阅读 · 0 评论 -
内存泄露检测之使用CRT的Debug技术
使用Debug版本的CRTCRT:C Run-Time Libraries,平时我们使用Visual Studio编译的程序,都会链接CRT运行库,不然,我们的程序是无法运行的,它主要做一些程序运行前的初始化工作。例如全局变量,就是CRT库帮助我们在进入main之前提前初始化的,当然它做的不只这一点工作。首先,使用CRT 提供的Debug技术,你得链接到Debug版本的CRT,CR转载 2015-11-16 22:58:20 · 3267 阅读 · 0 评论 -
VS2010 调试中断点突然失效的解决办法
问题描述:在调试前加了断点,但debug时红色的断点变成透明的圆圈加一个感叹号,执行到该处时也不会停止。这个问题遇到过几次了,前几次都没怎么注意,有时候是因为复制粘贴了某段代码后就这样了,然后点击撤销到复制之前的状态,再点保存,之后再复制过来就ok。实际这个问题是因为源文件和原始版本不同。解决方法有二:一,在断点上右键,选择“位置”》勾选”允许源代码与原始版本不同;二,点击菜单栏“原创 2016-04-17 22:32:33 · 8661 阅读 · 0 评论 -
Bug:“iterator_category”: 不是*的成员——当自定义函数与系统函数重名
原出处:http://blog.csdn.net/sxhelijian/article/details/8859653?utm_source=tuicool&utm_medium=referral有学生向我求助,他编了一个程序,设计一个“点”类,求出两点距离的程序。程序看着没有问题,却出了一大堆的错误。程序如下:[cpp] view plain copy转载 2016-05-14 16:08:54 · 3926 阅读 · 3 评论 -
extern "C"
扩展阅读 (extern 和 extern "C" 分析summary):http://hi.baidu.com/cjmxp/item/f5c2c2d71dd18bde251f4089条款1:避免把#include指令放在extern "C"里面不知道在你工作过的系统里,能够看到多少类似下面的代码:#ifndef __MY_HANDLE_H__#define __MY_HAN转载 2016-07-08 22:38:49 · 618 阅读 · 0 评论 -
error 2664
之前可以运行的程序突然不能运行了,出现了大量error2664,can't convert parameter from 'type1' to 'type2'.解决方法:配置build->set active configintion->win32 debug. 如使用unicode debug可能上述问题。原创 2016-08-03 15:28:24 · 1995 阅读 · 0 评论 -
extern详解(比较static)
1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 也就是说extern有两个作用,第一个,当它与"C"一起连用时,如: extern "C" void fun(int a, int b);则告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数转载 2016-08-06 19:44:29 · 1507 阅读 · 0 评论 -
TRACE()的用法
TRACE()宏一般是用在mfc中的,用于将调试信息输出到vs的输出窗口中(这是关键), 这在使用vs作为开发工具的时候,是非常方便的。 然而在开发一般c++程序时,却貌似无法获得这样的便利,其实只要经过几个步骤同样可以实现:一:#include<atltrace.h> //此头文件包含ATLTRACE宏,而其实MFC做的就是#define TRACE ATLTRA...转载 2015-10-21 16:31:45 · 2652 阅读 · 0 评论 -
free指针时的_CrtIsValidHeapPointer问题
malloc和free在教材里不知讲了多少,今天实际用到一处,就出问题了。案发现场是我用VC++在WINXP下编程,先看这一段代码{ BYTE *pBuffer; pBuffer = (BYTE *)malloc(64); pBuffer = pBuffer + 32; free(pBuffer); pBuffer = NULL;} //第一...转载 2015-10-18 15:39:11 · 525 阅读 · 0 评论 -
VS2015不能监视的解决办法
第一次使用VS2015社区版,发现对vector变量的监视不能看到内容,而是看到一些列指针:查资料发现是本地可视化原生类型不支持监视vector的内容,需要修改可视化文件natvis.方法:解决方案管理器中右击项目->添加->新建项->Visual C++->实用工具->调试可视化工具(.natvis)。把下面的代码粘贴上去就可以了。<?xml ve...原创 2017-03-23 11:27:51 · 6778 阅读 · 4 评论 -
C++编码问题
我们传统的程序基本都只在Windows或只在Linux下运行,Windows程序使用简体中文GB18030编码,Linux程序则只使用英文,多年以来这些程序运行起来都没有问题。 近年来,随着程序的组件化,部分代码特别是公用组件都需要同时支持Windows及Linux平台,这样就出现了不同程度的编码问题,例如在编译时编译器报错,或者在运行时出现乱码。这些问题都和程序选用的字符编码不...转载 2018-09-25 15:42:19 · 3086 阅读 · 0 评论 -
Linux C++ 中文处理 (uincode与utf-8相互转化)
本文来自 一线涯 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/jcjc918/article/details/52200478 我认为这是很棒的一片文章,解决了我用C++实现Java的hashCode函数时遇到编码的问题。原文如下:背景C++ 对于中文的处理是很蛋疼的事情,然而,不幸的我们接到命令,要在 Linux 下支持对文案进行文案超长截断处理。...转载 2018-09-25 22:43:35 · 25002 阅读 · 5 评论 -
return *this和return this有什么区别?
别跟我说, return *this返回当前对象, return this返回当前对象的地址(指向当前对象的指针)。 正确答案为:return *this返回的是当前对象的克隆或者本身(若返回类型为A, 则是克隆, 若返回类型为A&, 则是本身 )。return this返回当前对象的地址(指向当前对象的指针), 下面我们来看看程序吧:[cpp] view转载 2015-11-14 17:06:48 · 713 阅读 · 0 评论 -
局部变量、全局变量、堆、堆栈、静态和全局
预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 栈区(stack)— 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 堆区(heap) — 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。 全局区(静态区)(static)—,全局变量和静态转载 2015-11-14 17:11:52 · 452 阅读 · 0 评论 -
指针作为函数参数传递
这几天在学习C过程中,在使用指针作为函数参数传递的时候出现了问题,根本不知道从何得解:源代码如下: createNode(BinNode *tree,char *p) { tree = (BinNode *) malloc(sizeof(BinNode)); tree->data = *p; }该代码段的意图是通过一个函数创建一转载 2015-11-14 17:08:13 · 561 阅读 · 0 评论 -
GetDC()函数
函数功能:该函数检索一指定窗口的客户区域或整个屏幕的显示设备上下文环境的句柄,以后可以在GDI函数中使用该句柄来在设备上下文环境中绘图。 GetDCEx函数是GetDC的一个扩展,它能使应用程序更多地控制在客户区域内如何或是否发生剪切。 函数原型:HDC GetDC(HWND hWnd); 参数: hWnd:设备上下文环境被检索的窗口的句柄,如果转载 2015-09-29 12:01:58 · 1710 阅读 · 0 评论 -
VC6.0注释快捷键
第一步:工具栏上右键选择Customize(自定义),选择“Add-ins and Macro Files(附加项和宏文件)”页,把SAMPLE前面打上钩。第二步:选择“Commands(命令)”页,Category(类别)选Macros,然后在Commands中把CommentOut(注释)拖曳到工具栏快捷方式。第三步:选择“Keyboard”tab页,还是Categor转载 2015-09-20 10:28:56 · 1392 阅读 · 0 评论 -
如何检查内存泄露问题
简单说明了一下没有工具的情况如何运用VC库中的工具来检查代码的内存泄漏问题。一: 内存泄漏 内存泄漏是编程中常常见到的一个问题,内存泄漏往往会一种奇怪的方式来表现出来,基本上每个程序都表现出不同的方式。 但是一般最后的结果只有两个,一个是程序当掉,一个是系统内存不足。 还有一种就是比较介于中间的结果程序不会当,但是系统的反映时间明显降低,需要定时的Reboot才会正常转载 2015-11-08 17:28:56 · 558 阅读 · 0 评论 -
C/C++内存泄漏及检测
“该死系统存在内存泄漏问题”,项目中由于各方面因素,总是有人抱怨存在内存泄漏,系统长时间运行之后,可用内存越来越少,甚至导致了某些服务失败。内存泄漏是最难发现的常见错误之一,因为除非用完内存或调用malloc失败,否则都不会导致任何问题。实际上,使用C/C++这类没有垃圾回收机制的语言时,你很多时间都花在处理如何正确释放内存上。如果程序运行时间足够长,如后台进程运行在服务器上,只要服务器不宕机就一转载 2015-11-08 17:34:56 · 400 阅读 · 0 评论 -
VC++常用快捷键
F1 显示帮助,如果光标停在代码的某个字符上,显示MSDN中相应的帮助内容 F2 书签功能: Ctrl+F2 --在某行设置一个书签(再按一次次是取消) F2 --跳到下一个书签位置 Shift+F2 --跳到上一个书签位置 Ctrl+Shift+F2 --删除所有书签转载 2015-09-20 10:01:29 · 1080 阅读 · 0 评论 -
MFC 和Windows API的TextOut输出文字
void CTest1Dlg::OnButton1() { // TODO: Add your control notification handler code here /* //MFC输出 CDC* pDC = this->GetDC(); char buffer[] = "千万里,千万里我追寻着你!"; pDC->TextOut(100,100, buf转载 2015-09-20 08:52:28 · 12857 阅读 · 0 评论 -
C++内存泄露心得
闲话少说,切入正题,本人在参与一个大型Win32软件项目时,对整个项目进行了内存泄漏方面的检查,随着泄漏代码的一个个发现,发现许多的泄漏都具有某些共同性,于是乎总结了一些常见泄漏代码,发给同事们看了。希望能提醒下大家,但后来在项目的二期、三期版本出现的泄漏发现和以前的一些问题几乎是同一性质的,回过来看以前写的一些笔记发现都概括了(当时觉得自己是有那么两把刷子,^_^)。于是想到也许很多编程同志也会转载 2015-11-11 22:28:00 · 984 阅读 · 0 评论 -
Windows程序调试----第三部分 调试技术----第9章 内存调试
第9章内存调试 能够方便高效地进行动态内存分配,是C++编程语言的重要优点之一;而调试时容易错误使用动态分配的内存也是其最大的缺点之一。Windows程序也可能同样存在与系统资源泄漏或者堆栈相关的内存问题。内存问题是Windows程序错误的常见来源之一、而且如果没有合适的工具进行调试:它们将是最难以追踪到的错误之一。 动态内存分配错误有以下两种基本类型:内存错误和内存泄转载 2015-11-11 22:50:39 · 2347 阅读 · 0 评论 -
内存泄漏的检测、定位和解决经验总结
【摘要】结合局端MCU项目中CSS、NMS模块内存泄漏检测、修正的过程,简要介绍了内存泄漏检测的工具,提出了内存泄漏检测的一些方法(怎样对程序结构进行改造,怎样对程序进行隔离以易于进行内存泄漏检测)。总结了内存泄漏检测过程中成功和失败的体会,希望能对后来者有所启发。【关键词】内存泄漏一、故障或失误概况局端MCU项目中CSS(Conference Schedule Syste转载 2015-11-11 22:27:07 · 3062 阅读 · 0 评论 -
使用_CrtSetBreakAlloc调试内存泄露
按: 在MSDN上发现了一段关于VC调试内存泄漏的文字, 试了一下, 觉得挺好. 好东西不敢独享. 拿出来给大伙儿瞧瞧. 怕您看着麻烦. 随便翻了一下. 翻的不好, 还请大伙儿海涵:) 如果您的确有兴趣, 又觉得翻的实在太烂, 可以查看原文或其连接. arcoolgg,lieph@163.com HOWTO: 使用 _crtB转载 2015-11-12 23:30:59 · 694 阅读 · 0 评论 -
C语言的那些秘密之---函数返回局部变量
一般的来说,函数是可以返回局部变量的。 局部变量的作用域只在函数内部,在函数返回后,局部变量的内存已经释放了。因此,如果函数返回的是局部变量的值,不涉及地址,程序不会出错。但是如果返回的是局部变量的地址(指针)的话,程序运行后会出错。因为函数只是把指针复制后返回了,但是指针指向的内容已经被释放了,这样指针指向的内容就是不可预料的内容,调用就会出错。准确的来说,函数不能通过返回指向栈内存的指针(注意转载 2015-11-14 17:05:21 · 433 阅读 · 0 评论 -
Java中hashCode函数的Python,C++实现
摘要:hashCode函数是java中一个比较重要的函数,在工程上有较多的应用。如何用python和C++实现相同的功能呢?其难点在于java内部编码统一为unicode,而python和C++的编码形式比较多样,同样的函数使用不同的编码得到的结果可能不一样(甚至python2和python3都不一样)。本文主要就此进行介绍。一,java的hashCode函数实现:public in...原创 2018-09-28 23:39:10 · 4824 阅读 · 4 评论