![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 79
simbi
232
展开
-
placement new
1. placement new的含义placement new 是重载operator new 的一个标准、全局的版本,它不能够被自定义的版本代替(不像普通版本的operator new 和 operator delete能够被替换)。void *operator new( size_t, void *p ) throw() { return p; }placemen转载 2014-02-20 17:14:53 · 367 阅读 · 1 评论 -
大数运算库头文件
/***************************************************************** 大数运算库头文件:BigInt.h 作者:afanty@vip.sina.com 版本:1.2 (2003.5.13) 说明:适用于MFC,1024位RSA运算 ********************************转载 2009-12-23 09:34:00 · 688 阅读 · 0 评论 -
如何把SEH类型的系统异常转化为C++类型的异常
为什么要 把 SEH 类型的系统异常转化为 C++ 类型的异常?做一件事情之前,我们最好要搞清为什么!“十万个为什么” 可曾造就了多少顶级奇才!呵呵! WHY? ? WHY ? WHY ?这对任何一个人来说,都绝对是个好习惯,阿愚同学就一直把这个当“宝贝”。那么,究竟 为什么要 把 SEH 类型的系统异常转化为 C++ 类型的异常?朋友们,大家都想想,整理整理自己的意见和想法。这里,阿愚给出它转载 2009-07-14 17:09:00 · 366 阅读 · 0 评论 -
try{} catch(…){}
以前都是用try{} catch(…){}来捕获C++中一些意想不到的异常, 今天看了Winhack的帖子才知道,这种方法在VC中其实是靠不住的。例如下面的代码:try { BYTE* pch ; pch = ( BYTE* )00001234 ; //给予一个非法地址 *pch = 6 ; //对非法地址赋值,会造成Access Violation 异常 } catch(...) { Afx转载 2009-07-14 17:08:00 · 466 阅读 · 1 评论 -
Linux 下 C++ 异常处理技巧
级别: 初级Sachin O. Agrawal (sachin_agrawal@in.ibm.com), 高级软件工程师, IBM Software Labs, India2005 年 3 月 07 日处理 C++ 中的异常会在语言级别上遇到少许隐含限制,但在某些情况下,您可以绕过它们。学习各种利用异常的方法,您就可以生产更可靠的应用程序。保留异常来源信息在 C++中,无论转载 2009-08-22 17:30:00 · 455 阅读 · 0 评论 -
设计模式原则详解
这篇文章,不需要你一次就看懂,如果你真的能一次都看懂,我想设计模式对于你来说已经没什么难度了..因为设计模式就是要体现这些原则的,你可以把设计原则看做是一门语言,设计模式是由这些语言编码的程序..你既然已经明白,精通了语言,剩下的编码自然是很简单的事情,编码的越多则经验越多,经验越多则对原则的理解就越深...这是一个学习领悟的过程..S-uY t8S;q0itlab博客.E#F@zr转载 2009-04-13 16:47:00 · 432 阅读 · 0 评论 -
成员函数转void*
采用取成员函数指针的地址的方法,先把指向成员函数指针的指针强制转化为别的类型,如unsigned*,当然同样可以通过此转化后的指针经过相反的变换来调用成员函数。于是乎要转化为void*的问题也随之可解,如下示例:/* VS2003下编译运行 */class AbstractMethod{public: virtual void show(){} // = 0; // 可以是纯虚函数,这里为了测转载 2009-02-25 10:26:00 · 453 阅读 · 0 评论 -
仅通过崩溃地址找出源代码的出错行
作为程序员,我们平时最担心见到的事情是什么?是内存泄漏?是界面不好看?……错啦!我相信我的看法是不会有人反对的——那就是,程序发生了崩溃! “该程序执行了非法操作,即将关闭。请与你的软件供应商联系。”,呵呵,这句 M$ 的“名言”,恐怕就是程序员最担心见到的东西了。有的时候,自己的程序在自己的机器上运行得好好的,但是到了别人的机器上就崩溃了;有时自己在编写和测试的过程中就莫名其妙地遇到了非法操转载 2009-01-08 10:51:00 · 757 阅读 · 1 评论 -
静态变量 静态函数
一个类的静态成员,是所有对象共享的,分配空间也是在进程执行时,一开始就分配了,以后固定而不会再分配空间的.类的静态成员变量和类外全局变量的区别是,可以设定访问标志,只允许类的对象访问.如果类里定义public的静态变量,那么和类外的全局变量就没什么区别.而一个类的静态成员函数里,定义的变量是怎么样的呢?是不是也是所有对象共享呢?类的静态函数和类的成员变量一样,也是 在进程执行时,一开始就分转载 2008-11-13 10:20:00 · 667 阅读 · 3 评论 -
VC++的链接错误LNK2005
编程中经常能遇到LNK2005错误——重复定义错误,其实LNK2005错误并不是一个很难解决的错误。弄清楚它形成的原因,就可以轻松解决它了。 造成LNK2005错误主要有以下几种情况:1.重复定义全局变量。可能存在两种情况:A、对于一些初学编程的程序员,有时候会以为需要使用全局变量的地方就可以使用定义申明一下。其实这是错误的,全局变量是针对整个工程的。正确的应该是在一个CPP文件中定义如下:int转载 2008-04-26 09:55:00 · 433 阅读 · 0 评论 -
指向另一指针的指针
一. 回顾指针概念:早在本系列第二篇中我就对指针的实质进行了阐述。今天我们又要学习一个叫做指向另一指针地址的指针。让我们先回顾一下指针的概念吧!当我们程序如下申明变量:short int i;char a;short int * pi;程序会在内存某地址空间上为各变量开辟空间,如下图所示。内存地址→6 7 8 9 10 11 12 13转载 2008-01-20 11:28:00 · 324 阅读 · 0 评论 -
让你的控件也具有拖拽(drag-and-drop)功能
现在有很多软件都支持拖拽功能,就是用鼠标拖着文件放到软件窗口中某个位置,软件就可以做出相应的反应。比如,Windows自带的播放软件Windows Media Player,你可以拖着一个媒体文件放到它的主窗口中,它就会开始播放这个文件。 怎么让自己的软件也有这个功能呢? 其实,并不是很难,只要让你需要有拖拽功能的控件响应WM_DROPFILES消息就行了。下面以Edit控件和List转载 2008-01-20 01:20:00 · 544 阅读 · 0 评论 -
深入浅出MFC文档/视图架构之相互关系(2)
2. 消息流动机制 在基于"文档/视图"架构的MFC程序中,用户消息(鼠标、键盘输入等)会先发往视图,如果视图未处理则会发往框架窗口。所以,一般来说,消息映射宜定义在视图中。另外,如果一个应用同时拥有多个视图而当前活动视图没有对消息进行处理则消息也会发往框架窗口。 下面我们来看实例,我们利用Visual C++向导创建一个单文档/视图架构的MFC程序,在其中增加一个菜单项为"自定义"(ID为I转载 2007-12-20 13:43:00 · 461 阅读 · 0 评论 -
Free Heap block xxxxxxxx modified at xxxxxxxx after it was freed
方法一:如果你是C++程序员,如果你写过一个很复杂的程序,如果你经常碰到莫名其妙的崩溃问题。那么你就有可能遭遇了野指针。如果你比较细心,注意了Debug output输出窗口的话,那么你就有可能注意到这样一行提示:HEAP: Free Heap block xxxxxxxx modified at xxxxxxxx after it was freed网转载 2010-03-02 23:55:00 · 7502 阅读 · 1 评论 -
如何编写异常安全的C++代码
关于C++中异常的争论何其多也,但往往是一些不合事实的误解。异常曾经是一个难以用好的语言特性,幸运的是,随着C++社区经验的积累,今天我们已经有足够的知识轻松编写异常安全的代码了,而且编写异常安全的代码一般也不会对性能造成影响。 使用异常还是返回错误码?这是个争论不休的话题。大家一定听说过这样的说法:只有在真正异常的时候,才使用异常。那什么是“真正异常的时候”?在回答这个问题以前转载 2010-03-04 15:47:00 · 666 阅读 · 0 评论 -
在lua中操作C++对象的字段
luabind中注册一个c++对象,可以将那个对象作为参数传递到lua函数中,或者作为一个c++函数的返回值返回到lua中.并且,在lua中可以直接操作那个C++对象的数据成员.我这几天一直在思考这是怎么实现的,因为对boost不熟悉,所以很难对luabind的源代码作分析.经过了几天翻阅lua文档,终于想到了一个实现的方法. 假设我们有以下转载 2013-03-28 20:42:55 · 932 阅读 · 0 评论 -
详解如何把C++对象绑定到Lua轻量级
游戏中的使用脚本语言已经成为了一个标准应用。脚本语言能够在游戏开发中扮演一个重要的角色,并且让数据结构化,计划事件,测试和调试这些工作更加容易。脚本语言也能够允许像美术,策划这些非程序专家通过一个高层的抽象脚本来为游戏编写代码。这个抽象层的一部分也能够允许提供给玩家来定制整个游戏。从程序员的角度上来看,把一个脚本语言嵌入到游戏中最主要的问题是如果为脚本语言提供对宿主对象的访问(通常是C/C转载 2013-03-28 17:56:18 · 445 阅读 · 0 评论 -
C++中使用Lua脚本 和lua中调用c的方法
参考http://blog.csdn.net/kun1234567/archive/2007/12/11/1929815.aspx第1步:下载从官方主页www.lua.org下载Lua源代码,最新版本为5.1.3。(jack-wang注:现在已经是5.1.4了)解压之后找到“[Lua]/src”文件夹,这里面就是Lua了,不过还不能直接使用。第2步:编译lua使用任意ANSI转载 2011-11-01 15:39:14 · 2677 阅读 · 1 评论 -
如何编译TrueCrypt源码
配置TrueCrypt下载MSVC++ 1.52,安装在C盘下:C:\MSVC下载NASM,也安装在C盘下:C:\NASMhttp://www.nasm.us/pub/nasm/releasebuilds/2.07/win32/下载GZIP,也安装在C盘下:C转载 2011-10-14 16:03:47 · 1552 阅读 · 0 评论 -
VC内存泄露检查工具:Visual Leak Detector
初识Visual Leak Detector 灵活自由是C/C++语言的一大特色,而这也为C/C++程序员出了一个难题。当程序越来越复杂时,内存的管理也会变得越加复杂,稍有不慎就会出现内存问 题。内存泄漏是最常见的内存问题之一。内存泄漏如果不是很严重,在短时间内对转载 2011-08-22 17:29:50 · 313 阅读 · 0 评论 -
多态性与虚函数
多态性与虚函数 面向对象理论中的3个术语:对象、方法和消息。对象(object):不言而喻,它是构成系统的基本单位,有属性和行为两个要素,在C++中,每个对象都是由数据和函数这两部分组成的,数据即是对象的属性,行为称之为方法(method),方转载 2011-08-22 17:26:17 · 366 阅读 · 0 评论 -
C++的内存管理
这篇文章是我在学习高质量C++/C编程指南中的第7章"内存管理"后的一篇笔记,之前我也写过相关的文章指针以及内存分配,但我感觉那篇还不是很好,这篇我很把它更完善一些一.内存的常见分配方式 1. 从静态区分配,一般是全局变量和static类型变量 2.从转载 2011-08-19 17:44:03 · 276 阅读 · 0 评论 -
C++错误处理:异常和错误码的选择
<br />用C++写程序的时候,什么情况下用异常,什么情况下用错误码? 个人观点:只有系统确实需要性能的时候,才考虑不用异常处理错误;异常最主要的缺点:性能损失,使用异常,运行期间在不发生异常的情况下,性能可能会下降5%-14%!为什么要使用异常,异常能给我们带来什么?1. 增强程序健壮性,减少BUG如果系统某个地方throw异常,程序员必须在某个地方catch它,然后进行处理:处理错误或重新throw。如果采用错误码来处理错误,错误的返回值可以被忽略,可能这个错误会导致系统的运行状态处于无定义状态,转载 2011-02-23 17:09:00 · 1147 阅读 · 0 评论 -
内存泄漏定位(依赖MFC)
<br /><br />今天调试程序,发现有内存泄漏但是没有提示具体是哪一行,搞得我很头疼。结果在网上搜索了一些资料,经自己实践后整理如下:<br /> <br /> 第一种:通过"OutPut窗口"定位引发内存泄漏的代码(下面转,我写的没原文好,也懒得写)。<br /> <br />我们知道,MFC程序如果检测到存在内存泄漏,退出程序的时候会在调试窗口提醒内存泄漏。例如:class CMyApp : public CWinApp<br />{<br />public:<br /> BOOL In转载 2010-11-19 23:55:00 · 343 阅读 · 0 评论 -
offsetof(s,m)
<br />offsetof(s,m) 是一个宏,MSDN文档的说明如下:<br /><br />Retrieves the offset of a member from the beginning of its parent structure.<br /><br />size_t offsetof(<br />structName,<br />memberName<br />);<br /><br /><br />Parameters<br /><br />structName<br /转载 2010-08-12 16:25:00 · 321 阅读 · 0 评论 -
语言编程需要注意的64位和32机器的区别
一、数据类型特别是int相关的类型在不同位数机器的平台下长度不同。C99标准并不规定具体数据类型的长度大小,只规定级别。作下比较:16位平台char 1个字节8位short 2个字节16位int 2个字节16位long 4个字节32位指针 2个字节32位平台char转载 2010-04-29 17:56:00 · 796 阅读 · 0 评论 -
c++中使用成员函数作为函数参数的方法
总结有以下几个办法:1.使用类的静态成员: 最简单的.只是这种办法与使用普通函数没有什么区别2.模板的方法 1 templateclass T> 2 void Call(T* ptr,void(T::*MenFn)()) 3 { 4 (ptr->*MenFn)(); 5 } 1 class MyClass 2 { 3转载 2010-03-04 17:58:00 · 656 阅读 · 0 评论 -
深入浅出MFC文档/视图架构之文档(2)
打开文档的函数CDocument::OnOpenDocument完成的工作包括如下几步: (1)打开文件对象; (2)调用DeleteDontents(); (3)建立与此文件对象相关联的CArchive对象; (4)调用应用程序文档对象的Serialize()函数; (5)关闭CArchive对象、文件对象。 BOOL CD转载 2007-12-20 13:53:00 · 425 阅读 · 0 评论 -
深入浅出MFC文档/视图架构之文档(1)
1、文档类CDocument 在"文档/视图"架构的MFC程序中,文档是一个CDocument派生对象,它负责存储应用程序的数据,并把这些信息提供给应用程序的其余部分。CDocument类对文档的建立及归档提供支持并提供了应用程序用于控制其数据的接口,类CDocument的声明如下: /////////////////////////转载 2007-12-20 13:51:00 · 423 阅读 · 0 评论 -
VC++动态链接库(DLL)编程深入浅出(三)
第4节我们对非MFC DLL进行了介绍,这一节将详细地讲述MFC规则DLL的创建与使用技巧。 另外,自从本文开始连载后,收到了一些读者的e-mail。有的读者提出了一些问题,笔者将在本文的最后一次连载中选取其中的典型问题进行解答。由于时间的关系,对于读者朋友的来信,笔者暂时不能一一回复,还望海涵!由于笔者的水平有限,文中难免有错误和纰漏,也热诚欢迎读者朋友不吝指正! 5. MFC规则DLL转载 2007-04-09 22:55:00 · 817 阅读 · 0 评论 -
VC++动态链接库(DLL)编程深入浅出(二)
上节给大家介绍了静态链接库与库的调试与查看(动态链接库(DLL)编程深入浅出(一)),本节主要介绍非MFC DLL。被过滤广告4.非MFC DLL4.1一个简单的DLL 第2节给出了以静态链接库方式提供add函数接口的方法,接下来我们来看看怎样用动态链接库实现一个同样功能的add函数。 如图6,在VC++中new一个Win32 Dynamic-Link Library工程dllTest(单转载 2007-03-26 22:52:00 · 935 阅读 · 0 评论 -
VC++动态链接库(DLL)编程深入浅出(一)
1.概论 先来阐述一下DLL(Dynamic Linkable Library)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量、函数或类。在仓库的发展史上经历了“无库-静态链接库-动态链接库”的时代。被过滤广告 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib中的指令都被直接包含在最终生成的EXE文件中了。但是若使用DLL转载 2007-03-26 22:38:00 · 1099 阅读 · 0 评论 -
visual C++ 6.0开发工具与调试
1、 如何快速地规范代码缩进格式选中所需要规范的代码,按shift+F82、 如何在Release状态下进行调试Project->Setting=>ProjectSetting对话框,选择Release状态。C/C++标签中的Category选General,Optimizations选Disable(Debug),Debut info选Progra转载 2007-03-15 22:33:00 · 666 阅读 · 0 评论 -
MFC技术内幕系列之(五)---MFC文档序列化内幕
//////////////////////////////////////////////////////////////////////////////////// /********* 文章系列:MFC技术内幕系列***********/ /************转载 2006-09-04 10:57:00 · 954 阅读 · 0 评论 -
MFC技术内幕系列之(二)---MFC文档视图结构内幕
//////////////////////////////////////////////////////////////////////////////////// /********* 文章系列:MFC技术内幕系列***********/ /************MFC技术内幕系列之(二)***********转载 2006-09-04 10:52:00 · 886 阅读 · 0 评论 -
MFC技术内幕系列之(一)---MFC应用程序“生死因果”内幕
/////////////////////////////////////////////////////////////////////////////////// /********* 文章系列:MFC技术内幕系列***********/ /************MFC技术内幕系列之(一)***********/转载 2006-09-04 10:49:00 · 935 阅读 · 0 评论 -
Visual C++ MFC 中常用宏的含义
AND_CATCHAND_CATCH AND_CATCH(exception_class,exception _object_point_name) 说明:定义一个代码块,它用于获取废除当前TRY块中的附加异常类型。使用CATCH宏以获得一个异常类型,然后使用AND_CATCH宏获得随后的异常处理代码可以访问异常对象(若合适的话)已得到关于异常的特别原因的更多消息。在AND_CATCH块中调用TH原创 2006-09-04 10:11:00 · 620 阅读 · 0 评论 -
MFC技术内幕系列之(四)---MFC消息映射与消息传递内幕
//////////////////////////////////////////////////////////////////////////////////// /********* 文章系列:MFC技术内幕系列***********/ /************MFC技术内幕系列之(四)*********转载 2006-09-04 10:55:00 · 919 阅读 · 0 评论 -
MFC技术内幕系列之(三)----MFC执行期类型识别与动态创建技术内幕
//////////////////////////////////////////////////////////////////////////////////// /********* 文章系列:MFC技术内幕系列***********/ /************MFC技术内幕系列之(三)***********转载 2006-09-04 10:54:00 · 751 阅读 · 0 评论 -
Visual C++ 6.0编译指示
Visual C++ 6.0编译指示 Document Source:Pragma Directives, Preprocessor Reference, Visual C++ Programmer Guide. 每种C和C++的实现支持对其宿主机或操作系统唯一的功能。例如,一些程序需要精确控制超出数据所在的储存空间,或着控制特定函数接受参数的方式。#pragma指示使每原创 2006-08-31 22:06:00 · 849 阅读 · 0 评论