
C/C++
claien
这个作者很懒,什么都没留下…
展开
-
for循环和++运算符
这篇博客解释的已经很清楚了.http://blog.youkuaiyun.com/roger_77/archive/2007/04/21/1574129.aspxvoid main( ){ for(int i=0;i { if(i==5) break; }}相当于void main( ){ int i=0; while(j { if(i==5) break; i++; }}1.执行判断条件2.for循环体中的语句3.执行for()中的第三个语句如果碰上了b原创 2010-07-01 21:30:00 · 794 阅读 · 0 评论 -
Actor-Based Programming
http://msdn.microsoft.com/en-us/magazine/ff959205.aspx原创 2013-06-21 07:44:36 · 817 阅读 · 0 评论 -
C++ 常见内存错误
1.内存访问越界读或写越界,读写了不属于自己的内存,如果内存地址是无效的,程序崩溃2.访问空指针 03.分配、释放内存的函数不配对堆栈溢出:游戏编程精粹 1.10堆栈最后一页放置着守卫页面,当到达一定尺寸,当打算把最后一个能分配守卫页面空间都用掉,程序会被操作系统终止。MiniDumpWriteDump 甚至是MeaasgeBox函数开销太大,会引起访问冲突的错误。但是原创 2013-07-02 17:53:14 · 975 阅读 · 0 评论 -
[介绍] SymbolSort, 帮你避免或减少代码膨胀 (Code Bloat)
[介绍] SymbolSort, 帮你避免或减少代码膨胀 (Code Bloat)代码膨胀?这在以前其实并不是我会记在心上的问题,最近由于发现某个工程生成的 DLL debug 版本居然达到 25M 之大,我就开始想怎么判断这是不是正常,如果不正常有办法解决吗?或者能否在以后多加注意避免这种问题呢?在 google 大神的帮助之下,我找到一些不错的文章,其中某个博客的 Mi转载 2013-09-22 11:50:11 · 858 阅读 · 0 评论 -
A fast lock-free queue for C++
http://moodycamel.com/blog/2013/a-fast-lock-free-queue-for-c++#benchmarks// ©2013 Cameron Desrochers.// Distributed under the simplified BSD license (see the license file that// should have转载 2013-09-24 22:42:39 · 4705 阅读 · 0 评论 -
Link错误
warning LNK4042: 对象被多次指定;已忽略多余的指定1、把报LNK4042的.h和.cpp从项目中排除2、重新加入排除的.h和.cpp原因:1. 如果在属性窗口修改了文件的设定,就可能发生2. 在工程里存在两个不同位置的*.cpp文件。另一个只有一行#include *.h,不知何时加进来的。有的时候可能误将cpp文件移动到另一个目录下,而在工程里没有改变,VS会原创 2013-11-20 10:52:22 · 878 阅读 · 0 评论 -
调试定位缺陷
调试定位缺陷-《代码大全》科学的调试方法一、经典的方法1. 通过可重复的实验收集数据2. 根据相关数据的统计构造一个假设3. 设计一个实验来证明或反正这个假设4. 证明或反正假设5. 根据需要重复上面的步骤二、不可复现的bug1. 将错误稳定下来此类错误可能的原因:无法重现的bug可能的原因:初始化错误与时间相关悬空指针:未初原创 2014-02-23 08:40:20 · 1657 阅读 · 0 评论 -
C++常见内存错误汇总
在系统开发过程中出现的bug相对而言是比较好解决的,花费在这个上面的调试代价不是很大,但是在系统集成后的bug往往是难以定位的bug(最好方式是打桩,通过打桩可以初步锁定出错的位置,如:进入函数前打印日志,离开时再次打印日志)。而这些难以定位的bug基本分为2类:内存错误和并非问题。 1、内存泄露 如果在堆栈上分配的内存使用完成后没有释放就会造成内存泄露。转载 2014-02-23 11:00:18 · 817 阅读 · 0 评论 -
c/c++内存分配与内存对齐全面探讨
关于程序设计的内存分配问题freec(辽宁工程技术大学 软件学院 计SJ07-3 辽宁 葫芦岛 125000)[摘 要]在大多数低层程序设计中,由于内存分配与内存对齐问题所带来的bug所占比重非常大。本文对内存分配中的分配空间类型、作用、方法、适用范围、优缺点以及内存对齐问题中的对齐原因、对齐规则等进行了详细的说明,并结合大量c语言代码进行阐述与分析。[关键词]内存分配;转载 2014-02-23 18:20:52 · 698 阅读 · 0 评论 -
ptr_fun mem_fun_ref mem_fun bind1st bind2nd
////////////////////////////////////////////////////////////////////////////ptr_fun mem_fun_ref mem_fun//STL 算法函数有些要传入仿函数,例如remove_if()的第三个参数。//许多情况下直接传入一个全局指针函数是不会报错的,有时则不然,例如:bind2nd(),这时需要使用ptr_fun;//当一个函数指针是类成员函数时,编译将不能通过。此时将使用到了mem_fun和me原创 2010-11-13 16:42:00 · 1993 阅读 · 1 评论 -
C++ Template 中的typename、class关键字
<br />在c++Template中很多地方都用到了typename与class这两个关键字,而且好像可以替换,是不是这两个关键字完全一样呢?<br /> 相信学习C++的人对class这个关键字都非常明白,class用于定义类,在模板引入c++后,最初定义模板的方法为: template<class T>...... <br />在这里class关键字表明T是一个类型,后来为了避免class在这两个地方的使用可能给人带来混淆,所以引入了typename这个关键字,它的作用同c转载 2010-09-28 23:09:00 · 384 阅读 · 0 评论 -
类中重载new的几种形式
1 )new operator : 只分配内存,不调用构造函数CTest* newoperator = (CTest*)::operator new( sizeof(CTest) ); 2 )operator new:当以下面函数形式重载new时,那么当你new一个对原创 2011-09-19 16:53:42 · 1993 阅读 · 0 评论 -
C++各大有名科学计算库
在 C++中,库的地位是非常高的。C++之父 Bjarne Stroustrup先生多次表示了设计库来扩充功能要好过设计更多的语法的言论。现实中,C++的库门类繁多,解决的问题也是极其广泛,库从轻量级到重量级的都有。不少都是让人眼界大开,亦或是望而生叹的思维杰作。由于库的数量非常庞大,而且限于笔者水平,其中很多并不了解。所以文中所提的一些库都是比较著名的大型库。C++各大有名库的介绍——科学计转载 2011-11-13 08:31:49 · 2862 阅读 · 0 评论 -
Future模式
#include "Future.h"#include #include int GetFutureResult() { Sleep(10000); return 10; } int TestFuture() { std::future sFutureResult = std::async(GetFutureResult);原创 2013-06-13 16:55:51 · 780 阅读 · 0 评论 -
经典书籍
Mark Allen Weiss : >数据结构与算法分析——C语言描述(原书第2版)数据结构与算法分析--C++描述(原书第3版) 第三版采用C++语言,内容和第二版C描述的差不多,多了关于STL的实现的讲解。Rebort Sedgewick>>以上两本书都有第三版,内容基本差不多.分为两卷>第四版 java实现 ,只有一卷。感觉和上面两本是完全不同的一部书。原创 2013-04-17 10:27:04 · 703 阅读 · 0 评论 -
C++临时对象
<br />临时对象的产生:<br />1. 用构造函数作为隐式类型转换函数时。<br /> <br />class CTempObj{public: char m_szString[10]; char* m_pString; CTempObj(int n) { m_pString=new char[10]; strcpy(m_szString,"string1"); strcpy(m_pString,"string2"); cout<原创 2010-07-08 21:57:00 · 542 阅读 · 0 评论 -
C++一些细节
用C++编程,一些细节工作中使用不到,也没有考虑过。有时候,想一想一些细节问题,感觉还真的不能用十分肯定的语气回答。所以陆续总结了一些C++语言中的小细节。。。。1.隐藏:派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏。派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual关键字。此时,基类的函数被隐藏。2.inline要和函数体在一起才会被编译为内联函数。3.构造函数1)当派生类定义了一个构造函数,不管是有参数还是无参数。基类必须定原创 2010-07-18 21:36:00 · 832 阅读 · 2 评论 -
C 二维数组做函数参数
#include "../stdafx.h"const int c_nX=5;const int c_nY=3;void display1(int (*p)[c_nX],int ny){ for(int i =0; i { for(int j =0; j cout cout } p[0][0]=100; //可变}///////////////////////////////////////////////////void display2(int data[][c_nX],int ny)原创 2010-07-31 13:59:00 · 1025 阅读 · 0 评论 -
C++静态成员函数
<br />class CMyClass<br />{<br /> pbulic:<br /> int m_nData;<br /> CMyClass m_aMyClass;<br />};<br /> <br />错误的定义。可想而知,编译的时候会产生无限递归。<br /> <br />一般都是这样使用:<br />class CMyClass<br />{<br /> pbulic:<br /> int m_nData;<br /> CMyClass* m_aMy原创 2010-09-23 20:06:00 · 373 阅读 · 0 评论 -
关于volatile和原子操作研究的插曲
<br />所谓原子操作,就是"不可中断的一个或一系列操作" , 在确认一个操作是原子的情况下,多线程环境里面,我们可以避免仅仅为保护这个操作在外围加上性能昂贵的锁,甚至借助于原子操作,我们可以实现互斥锁。<br />很多操作系统都为int类型提供了+-赋值的原子操作版本,比如 NT 提供了 InterlockedExchange 等API, Linux/UNIX也提供了atomic_set 等函数。<br />前两天有同学问我:在x86上,g_count++ (int类型) 是否是一个原子操作? 我的回答转载 2010-10-20 21:38:00 · 479 阅读 · 0 评论 -
new 重载的规范
//如果内存分配请求成功,就返回指向内存的指针;如果失败,抛出一个std::bad_alloc类型的异常。 //operator new实际上会不只一次地尝试着去分配内存,它要在每次失败后调用出错处理函数,还期望出错处理函数能想办法释放别处的内存。 //只有在指向出错处理函数的指针为空的情况下,operator new才抛出异常。 //非类成员形式的operator new的伪代码原创 2012-08-15 14:42:42 · 571 阅读 · 0 评论 -
STL以及内存以及类的默认函数-题目
String::String( void ){ m_str_data = new char[1]; m_str_data[0] = '\0';}String::String( const char* str ){ if ( str == NULL ) { m_str_data = new char[1]; m_str_data[0] = '\0';原创 2012-08-15 16:41:44 · 453 阅读 · 0 评论 -
函数指针
全局函数指针的基本使用方法//函数类型 typedef int fun1( int ); //函数指针类型 typedef int (*fun2)( int ); //函数指针 int (*g_fun)(int); int fun( int n ) { return n * n; } void ma原创 2011-03-06 11:30:00 · 491 阅读 · 0 评论 -
临时对象与拷贝构造函数
百度百科:拷贝构造函数拷贝构造函数,是一种特殊的构造函数,它由编辑器调用来完成一些基于同一类的其他对象的构建及初始化。其唯一的参数(对象的引用)是不可变的(const类型)。此函数经常用在函数调用时用户定义类型的值传递及返回。拷贝构造函数要调用基类的拷贝构造函数和成员函数。如果可以的话,它将用常量方式调用,另外,也可以用非常量方式调用。 一直认为对象初始化 函数值传参 函数值返回 是调用拷原创 2012-08-14 14:49:10 · 1226 阅读 · 0 评论 -
Lambda C++
#include #include int LambdaStrategy( const std::list& numbers, std::tr1::function func ){ int nSum = 0; for ( std::list::const_iterator it = numbers.begin(); it != numbers.end(); ++it ) { nS原创 2013-04-10 15:41:50 · 570 阅读 · 0 评论 -
仿函数与if算法
<br />struct SMyData{ int m_nData; int m_nData2;};//使用STL中带有if的算法,可以传入自定义条件,当符合条件时进行当前算法的操作。struct sfind_function { sfind_function(){ cout<<"Init 1"<<endl;}; bool operator () (SMyData& aData) { return aData.m_nData==6; //设当为6原创 2010-11-13 18:57:00 · 680 阅读 · 0 评论