
C/C++
文章平均质量分 91
napu_sh
半路出家的机械师
展开
-
几个宏定义
ANSIC的6个预定义宏(所有编译器必须识别) ANSIC标准定义了以下6种可供C语言使用的预定义宏: __LINE__ 在源代码中插入当前源代码行号 __FILE__ 在源代码中插入当前源代码文件名 __DATE__原创 2008-09-23 16:19:00 · 871 阅读 · 0 评论 -
RTMP协议概述
原文出处 http://www.openred5.com/bbs/viewthread.php?tid=188&extra=page%3D1RTMP协议概述介绍:RTMP协议是被Flash用于对象,视频,音频的传输.该协议建立在TCP协议或者轮询HTTP协议之上.RTMP协议就像一个用来装数据包的容器,这些数据可以是AMF格式的数据,也可以是FLV中的视/音频数据.一个单一的连接可以通过转载 2008-09-26 14:01:00 · 1009 阅读 · 0 评论 -
堆和栈的区别
原文地址 http://community.youkuaiyun.com/Expert/topic/5004/5004296.xml?temp=.4819452 五大内存分区 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。转载 2009-01-04 16:19:00 · 687 阅读 · 0 评论 -
跨模块内存管理的陷阱
本文转自http://www.winxgui.cn/blog/?page_id=48 由于编译器、编译模式的不同,不同模块的内存结构与管理程序往往并不相同。因此,如果我们在一个模块申请内存,而在另一个模块中释放,这是一个不安全的做法。因为模块在释放内存的时候,并不会预料到需要释放的内存并非是自己管理的。直观的说,假设我们有两个模块:Module1,Module2。它们有函数Module转载 2008-12-05 10:43:00 · 915 阅读 · 0 评论 -
内存 堆/栈
l 栈栈作为一种基本数据结构,我并不感到惊讶,用来实现函数调用,这也司空见惯的作法。直到我试图找到另外一种方式实现递归操作时,我才感叹于它的巧妙。要实现递归操作,不用栈不是不可能,而是找不出比它更优雅的方式。 尽管大多数编译器在优化时,会把常用的参数或者局部变量放入寄存器中。但用栈来管理函数调用时的临时变量(局部变量和参数)转载 2009-05-15 11:10:00 · 635 阅读 · 0 评论 -
多核机器上多线程内存敏感程序的可伸缩性
原文出处:http://www.codeproject.com/KB/cpp/rtl_scaling.aspx翻译此文也是一个学习的过程,因为在多CPU下的编程和单CPU下看起来区别巨大,就方向而言,OpneMP,MPI,TBB发展的都很快,当然快速也许就意味着一些技术会被淘汰。而本文只是对现有单核编程的改良,和上述方向无关,只是为了尽可能解决现有程序的问题,而尽量做最小改动。翻译 2010-02-22 21:19:00 · 3214 阅读 · 0 评论 -
C++异常中的堆栈跟踪
本文转自http://www.ieee.org.cn/dispbbs.asp?boardID=61&ID=37287 C++语言的运行时环境是基于栈的环境,堆栈跟踪(trace stack)就是程序运行时能够跟踪并打印所调用的函数、变量及返回地址等,C++异常中的堆栈跟踪就是当程序抛出异常时,能够把导致抛出异常的语句所在的文件名和行号打印出来,以及把调用抛出异常的语句的函数以及其转载 2010-03-07 23:58:00 · 2272 阅读 · 1 评论 -
使用__FILE__和__LINE__定位错误
本文转自http://www.cppblog.com/heath/archive/2008/08/05/58046.html 问题:当运行时错误产生时,我怎样才能得到包含C++文件名和行号的字符串信息?回答:在C++中的__FILE__预编译指示器包含了被编译的文件名,而__LINE__则包含了源代码的行号。__FILE__和__LINE__的前后都包含了两个下划线,让我们仔细看看__转载 2010-03-06 23:12:00 · 875 阅读 · 0 评论 -
学习C++:实践者的方法
转自http://blog.youkuaiyun.com/pongba/archive/2007/12/11/1930150.aspx前言我的blog以前很长一段时间关注的都是C++中的技术&细节,乃至于读者和应者都寥寥。然而5月份的时候写的一篇“你应当如何学习C++”,阅读量却达到了3万多,在blog上所有文章中却是最高的(且远远超过了第二位);评论数目也有一百多。为什么独独这篇能够激起这么多的回应,想必是国内的C++社群被C++压抑太久,或者,严格来说,是被C++的教育方式压抑太久。实际上,不管是在各大国内论坛上,转载 2010-08-17 23:43:00 · 839 阅读 · 0 评论 -
C++的内存管理
<br /><br />转自http://www.easycpp.org/content/science_doc/c的内存管理<br /> <br />摘要:C++是一种流行且功能强大的程序设计语言,利用C++已经产生出世界上各异的程序软件包。C++是在C语言的基本之上发展而来,它能够对C语言向下兼容,所以它也C语言的许多不足,其中内存管理就是社区中大家反应很大的“遗憾”。<br />概述<br /> <br />内存是计算机系统最重要的资源之一,要是管理不当会引起许多的问题。当然对整个系统的内存管理是操作转载 2010-08-18 12:43:00 · 601 阅读 · 0 评论 -
读取配置文件动态创建对象[C++]
<br />本文转自http://jnn.blogbus.com/logs/1879300.html<br /> <br /> <br />问题的由来<br />使用过Log4J 的朋友应该有这样酷的体会,通过修改配置文件可以很方便得实现对应用程序的日志行为进行定义,而这些都不需要修改任何的应用程序代码。也许你会说,这些在Java中是很容易实现的(使用classforname 就可以很容易实现了)。<br /> <br /> <br />但是对于使用C++来进行日常开发的朋友,如果要实现这样的功能又如何来做转载 2010-08-18 17:55:00 · 2345 阅读 · 0 评论 -
模版特例化
<br /><br />转自http://www.cppblog.com/shanoa/archive/2009/05/25/85683.html<br /> <br />写模版多了的人,必然会遇到这样那样的问题,模版特例化就是解决了一个经常碰见的问题:如果我们需要根据某些特殊的模版参数类型来重新实现一下算法的话,该怎么办呢?说的多了那也没什么用,我们就写一个会做除法的类吧。这个类在做整数除法的时候会同时求出余数,而在算其他类型时是不求的。代码如下:<br /> <br /> <br />#include转载 2010-08-17 23:09:00 · 729 阅读 · 0 评论 -
模版的特化与偏特化
<br />转自http://blog.youkuaiyun.com/andy205214/archive/2010/03/11/5367575.aspx<br /> <br />Partial Template Specialization能够让你在模板(Template)的所有可能的实体中特化出一组子集.<br /> 1.模板的特化(template specialization):<br /> 例如,定义如下的一个模板:<br /> template<class Window, class Cont转载 2010-08-17 23:10:00 · 500 阅读 · 0 评论 -
利用C++模板,代替虚函数,实现类的静态多态性(加入性能测试部分)
<br />本文转自 http://www.cppblog.com/woaidongmao/archive/2008/05/22/50805.aspx<br /> <br /><br /> 熟悉模板编程的朋友或许听到过这个技巧或者模式:Barton-Nackmann 技巧或者称 奇异循环模板模式(Curiously Recurring Template Prattern)。<br /> 其实在 《c++ 编程语言》这本bible 书里,在模板那章提到过一个很奇妙的类的实现,用的就是这个技术转载 2010-08-17 23:31:00 · 747 阅读 · 0 评论 -
C++箴言:理解typename的两个含义
<br />本文转自http://dev.yesky.com/13/2221013.shtml<br /> <br /> 问题:在下面的 template declarations(模板声明)中 class 和 typename 有什么不同? <br /><br />template<class T> class Widget; // uses "class"<br />template<typename T> class Widget; // uses "typename"<br /> 答案:没什么不转载 2010-08-19 08:19:00 · 523 阅读 · 0 评论 -
c++程序员 常用工具集
<br />转自http://www.cppblog.com/tx7do/archive/2006/04/21/6042.html<br /> <br /><br />【声明】如需复制、传播,请附上本声明,谢谢。原文出处:http://morningspace.51.net/,moyingzz@etang.com<br /><br /> 所谓“工欲善其事,必先利其器”,从程序员的角度来讲,好工具的使用总会给人带来事半功倍的效果。面对众多工具/软件,我们应该如何取舍呢。前不久,笔者在csdn的c++论坛发了转载 2010-09-09 22:10:00 · 1147 阅读 · 1 评论 -
trait和policy研习
<br />本文转自http://redwolf.blog.51cto.com/427621/88190/<br /> <br /> 本例是参考书本上的trait和policy的演绎过程。为什么我们需要trait和policy,怎样应用它。例子本来是一个简单的求和函数。为了提供更广泛可重用的代码,主要从一下两个方面进行了扩展和泛型化: 1、如何得到一个合适的返回值? 2、如何使这个求和函数能够以相似的形式提供求积功能,已经其他更多的功能? 按照泛型转载 2010-09-09 22:49:00 · 642 阅读 · 0 评论 -
关于C++ Traints
<br />本文转自 http://hi.baidu.com/googlekongjianddd/blog/item/7206736600373b2faa184c4c.html<br /> <br />Traits技术可以用来获得一个 类型 的相关信息的。 首先假如有以下一个泛型的迭代器类,其中类型参数 T 为迭代器所指向的类型:<br /><br />template <typename T><br />class myIterator<br />{<br />...<br />};<br /><br /转载 2010-09-09 22:22:00 · 907 阅读 · 0 评论 -
详述trait和policy演化
<br />转自http://redwolf.blog.51cto.com/427621/90096<br /> <br /> 开博时发了一篇“trait和policy研习”的源码,很少有朋友关注,写的太简略,这一次把它展开来,发现一下子还写不完,分两次吧!希望和朋友们一起学习! 给定一个整型数组,要求编写一个函数,求其内元素的和。这是一个简单的编程,大家都能很快的编写出如下的程序:#define SIZE 5; <br />int a[SIZE]={10,11,12,13,14转载 2010-09-09 22:52:00 · 732 阅读 · 0 评论 -
虚拟继承,虚基类
<br />转自http://blog.youkuaiyun.com/skylor/archive/2009/03/26/4025698.aspx<br /> <br /><br />虚拟继承与虚基类实际上是说了同一件事,只是不同的书表达不同,在这里还是推荐虚拟继承这种说法(因为有人总问虚基类是什么,这里可以解释为虚基类就是虚拟继承,一种继承的方式,有的书偏要把一个动作写成一个名词,不负责任)。虚拟继承是C++继承的一个特殊方法,用来达到特殊的目的。要达到什么目的呢?那就是避免继承机制下的二义性问题(二义性:程序产生两转载 2010-09-01 14:26:00 · 525 阅读 · 0 评论 -
候捷谈Java反射机制
<br />本文转自http://blog.youkuaiyun.com/znnren/archive/2006/04/12/660024.aspx<br /> <br /><br />Java反射机制<br /> <br />摘要<br />Reflection 是Java被视为动态(或准动态)语言的一个关键性质。这个机制允许程序在运行时透过Reflection APIs取得任何一个已知名称的class的内部信息,包括其modifiers(诸如public, static 等等)、superclass(例如Objec转载 2010-09-05 23:43:00 · 746 阅读 · 0 评论 -
标准C++实现反射特性
<br />转自 http://blog.youkuaiyun.com/johnson3d/archive/2010/03/17/5388642.aspx<br /> <br /><br />文章贴不全,从这下,有代码和本文<br />http://download.youkuaiyun.com/source/2135630<br /> <br />需求<br /> 程序员通常有一个说法,叫做数据结构+算法=程序。随着软件项目的日渐复杂,这个公式我认为应该修订成数据结构+算法+构架=程序,而在这个google ba转载 2010-09-06 22:05:00 · 905 阅读 · 0 评论 -
调试游戏程序的学问
<br />转自 http://blog.youkuaiyun.com/fannyfish/archive/2006/06/02/769792.aspx<br /> <br />1.1 调试游戏程序的学问<br />作者:Steve Rabin, Nintendo of America Inc.<br />邮箱:steve@aiwisdom.com<br />译者:沙鹰<br />校对:万太平<br /> <br />调<br />试游戏程序,和调试任何其它软件的代码一样,都可能是一项艰巨的任务。一般说来,有经验的程转载 2010-09-06 22:08:00 · 1040 阅读 · 0 评论 -
VS2005中远程调试的配置方法
<br />转自http://www.cppblog.com/kyline/archive/2009/04/23/80821.aspx<br /> <br /><br />在VS2005中不能使用VS2003的远程调试程序。VS2005远程调试的方法:<br />(1) 远程端:安装VS2005光盘"X:/vs/Remote Debugger/x86/ rdbgsetup.exe"。或者直接运行或copy本地端的: "Program Files/Microsoft Visual Studio 8/Commo转载 2010-12-28 11:25:00 · 779 阅读 · 0 评论 -
常用GDB调试命令简表
本文转自 http://hi.baidu.com/aquaspace/blog/item/b152bfcc0dc4da1501e928d6.html 命令说明备注file 文件名在gdb中载入某可执行文件 break设置断点支持如下形式:break 行号;break 函数名称;break 行号/函数名称 if 条件转载 2011-06-29 15:08:00 · 667 阅读 · 0 评论 -
Linux下的段错误产生的原因及调试方法
本文转自 http://www.upsdn.net/html/2006-11/775.html 简而言之,产生段错误就是访问了错误的内存段,一般是你没有权限,或者根本就不存在对应的物理内存,尤其常见的是访问0地址.一般来说,段错误就是指访问的内存超出了系统所给这个程序的内存空间,通常这个值是由gdtr来保存的,他是一个48位的寄存器,其中的32位是保存由它指向的gdt表,后13位保存相应于转载 2011-06-29 15:17:00 · 757 阅读 · 0 评论 -
(hryEngine)引擎基础组成——高效内存池(lookaside list)
转自 http://blogold.chinaunix.net/u3/102180/showart_2065839.html// 工程名称:网络游戏服务器端引擎《hryEngine》 // 参考项目:ReactOS、Apache、ACE【路过的朋友请留下您宝贵的意见,谢谢!】转载 2011-07-24 09:49:38 · 935 阅读 · 0 评论 -
通用视频库/General Library
转自 http://www.cvchina.info/codes/这个页面力图搜集各种跟CV,AR相关的代码,如无特别声明,均是c/c++代码。还是一贯的标准,不求全面,只求质量。如有特别推荐的代码,请在本页留言,或者email我:cvchina AT转载 2011-09-05 14:52:46 · 1157 阅读 · 0 评论 -
C++程序运行时内存布局之----------局部变量,全局变量,静态变量,函数代码,new出来的变量
转自 http://blog.youkuaiyun.com/smstong/article/details/6578243声明两点:(1)开发测试环境为VS2010+WindowsXP32位;(2)内存布局指的是虚拟内存地址,不是物理地址。 1.测试代码转载 2011-08-12 14:51:07 · 851 阅读 · 0 评论 -
C++程序运行时内存布局之----------简单类实例,成员变量,成员函数,静态成员变量,静态成员函数
本文转自 http://blog.youkuaiyun.com/smstong/article/details/6583214源代码如下:view plain#include using namespace std;转载 2011-08-12 14:56:21 · 662 阅读 · 0 评论 -
C++程序运行时内存布局之----------空类实例
本文转自 http://blog.youkuaiyun.com/smstong/article/details/65783891.测试代码view plain#include #include using namespa转载 2011-08-12 14:52:01 · 513 阅读 · 0 评论 -
C++程序运行时内存布局之----------无继承情况下的虚函数
本文转自 http://blog.youkuaiyun.com/smstong/article/details/6584026虚函数是C++实现多态的关键,没有虚函数,C++只能是OB,不能完成OO。对于VC++中虚函数的实现机制,有很多文章,我看过的是陈浩写的,链接如下:转载 2011-08-12 14:57:16 · 625 阅读 · 0 评论 -
C++ STL(标准模板库) 学习资源列表
转自 http://stlchina.huhoo.net/twiki/bin/view.pl/Main/STLLearnResouce作者:Winter来源: 最优秀的STL学习网站C++ STL(标准模板库) 学习资源列表1 ST转载 2011-08-26 09:59:26 · 897 阅读 · 0 评论 -
C++中模拟委托事件的方法(三)
转自 http://blog.youkuaiyun.com/gogogo/article/details/6999352 二、接口模拟事件对应的例子工程名InterfaceEvent由于C++不支持接口,但是支持抽象类和多重继承,所以可以通过class或struct模拟实现接口。1、 具体的实现方法(1)、事件触发对象类CNotifyClass的类定义如下:view pl转载 2011-11-26 22:44:22 · 591 阅读 · 0 评论 -
在C++中模拟委托事件的方法(四)
转自 http://blog.youkuaiyun.com/gogogo/article/details/6999477三、静态函数方式实现多对象事件接收对应的例子工程名MultiObjectEvent在静态函数模拟事件方法中,如果读者细心的话,会发现类CNotifyClass只包含一个指定对象的成员变量m_pEventParameter,在使用RegisterEvent方法注册接收事件的函数时如转载 2011-11-26 22:56:26 · 557 阅读 · 0 评论 -
在C++中模拟委托事件的方法(五)
转自 http://blog.youkuaiyun.com/gogogo/article/details/6999919 五、事件链模拟事件对应的例子工程名DelegateChainEvent类模板的方法已经可以比较方便的让不同的对象接收同一个事件触发类的不同事件了,大多数的开发需要都能满足了,不过如果用过C#的人就会看到其中的一些问题,就是事件链的问题,因为C#允许对事件进行”+=”和”-=转载 2011-11-26 23:03:13 · 488 阅读 · 0 评论 -
在C++中模拟委托事件的方法(六)
转自 http://blog.youkuaiyun.com/gogogo/article/details/6999960最后我们针对这4种比较可行的模拟事件方法进行一下评价,评价的标准主要考虑以下几个方面1、 是否可以只接收事件触发类的一部分事件2、 一个事件触发类是否支持多个事件接收类对象接收事件3、 事件处理函数是否可以使用保护或私有的访问权限,保证事件接收类的封装特性4、 书转载 2011-11-26 23:03:57 · 576 阅读 · 0 评论 -
利用C++的模板模拟.net的代理语法
转自 http://blog.youkuaiyun.com/lanzhengpeng2/article/details/6128362 用了一段时间.net的代理模式,觉得挺好使.且原来C++代码中存在大量需要代理的东西,由于没有近似的东西,都是靠接口实现的,看起来很别扭.遂想我是不是也能做这么一个东西.boost的function不是很熟悉,但基本实现还是明白的.直接用boost::functi转载 2011-11-26 22:25:45 · 519 阅读 · 0 评论 -
在C++中模拟委托事件的方法(一)
转自 http://blog.youkuaiyun.com/gogogo/article/details/6996290 如果对C#、Delphi等语言熟悉,都知道这些语言支持委托事件的方法使用起来非常方便,并且能够较好的降低类的依赖关系,而C++语言没有集成这种语法,所以要想在C++使用这种事件模式需要开发人员自己来模拟,本文将提供多种模拟的方案,并会分析各自的优缺点,可以在需要的时候有选择的使用。转载 2011-11-26 22:28:33 · 591 阅读 · 0 评论 -
一些有意思的算法代码
转自 http://sd.youkuaiyun.com/a/20111129/308265.htmlKeith Schwarz是一个斯坦福大学计算机科学系的硕士研究生。他对编程充满了热情。他的主页上他自己正在实现各种各样的有意思的算法和数据结构,http://www.keithschwarz.com/interesting/, 目前这个网页上有88个(见下面的列表),但这位大哥要干135个转载 2011-11-30 14:52:28 · 1077 阅读 · 0 评论