pamxy

为了那么丁点的兴趣,你懂的...

导航

随笔分类 -  c++

智能指针(auto_ptr 和 shared_ptr)
摘要:转自:http://www.cppblog.com/expter/archive/2009/03/29/78270.html都是这周看书以及代码的总结: Stl 中 auto_ptr只是众多可能的智能指针之一,auto_ptr所做的事情,就是动态分配对象以及当对象不再需要时自动执行清理。这里是一个简单的代码示例,如果没有auto_ptr, 1voidProcessAdoption(istream&data)2{34while(data)//如果还有数据5{6ALA*pa=readALAData(data);//取出下一个数据7pa->DealProcessAdoption(dat 阅读全文

posted @ 2013-05-31 16:48 pamxy 阅读(293) 评论(0) 推荐(0)

智能指针学习
摘要:转自:http://blog.csdn.net/linfengfeiye/article/details/4054258最近接触到智能指针很多,于是研究了一下智能指针的原理,写下自己的心得体会,有不对的还请指正。智能指针产生的目的:因为在C++中,存在非常复杂的指针错误问题,例如,某个对象生成后,指向该对象的指针可能有多个,当我们用delete语句删除其中的一个指针后,对象就被销毁,那么其余指向该对象的指针就会悬空,这样很容易出错内存误,为避免出现这样的问题,出现了智能指针,智能指针有2种构造方法,一种是插入式的还有一种是非插入式的,非插入式指针一般是直接采用裸指针作为参数进行创建,不需要修改 阅读全文

posted @ 2013-05-31 14:39 pamxy 阅读(226) 评论(0) 推荐(0)

C++编程学习50个经典网站 强力推荐
摘要:转自:http://blog.csdn.net/zhangxuye_fujitsu/article/details/8700234C/C++是最主要的编程语言。这里列出了50名优秀网站和网页清单,这些网站提供c/c++源代码。这份清单提供了源代码的链接以及它们的小说明。我已尽力包括最佳的C/C++源代码的网站。这不是一个完整的清单,您有建议可以联系我,我将欢迎您的建议,以进一步加强这方面的清单。1、http://snippets.dzone.com/tag/c/--数以千计的有用的C语言源代码片段2、http://www.hotscripts.com/category/c-cpp/script 阅读全文

posted @ 2013-03-30 21:33 pamxy 阅读(870) 评论(0) 推荐(0)

memmove
摘要:转自:http://baike.baidu.com/view/1026882.htm目录函数简介程序示例编辑本段函数简介原型:void *memmove( void*dest, const void* src,size_tcount );头文件:<string.h>功能:由src所指内存区域复制count个字节到dest所指内存区域。说明:memmove用于从src拷贝count个字符到dest,如果目标区域和源区域有重叠的话,memmove能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中。但复制后dest内容会被更改。但是当目标区域与源区域没有重叠则和memcpy函数功能 阅读全文

posted @ 2013-03-30 12:47 pamxy 阅读(256) 评论(0) 推荐(0)

VC自定义资源
摘要:用到的相关API:FineResource:查找一个资源。我们是把相关要生成的文件载入,就是用这个函数来确定其资源的位置。SizeofResource:获得资源的尺寸。LoadResource:装载资源,装入到内存中。LockResource:锁定资源,在内存中锁定。好了,现在在VC的工程中载入这个文件吧。首先,我们把***.exe或者***.mid该成***.bin二进制文件,在资源文件上点击右键,选择Import(导入)。这里我们为自定义资源类型,即Custom Resource Type,Resource type为读者兴趣随便填写,这里用MyRes,资源名称用IDR_MyRes。好了, 阅读全文

posted @ 2013-03-29 19:47 pamxy 阅读(497) 评论(0) 推荐(0)

MAKEINTRESOURCE
摘要:转自:http://baike.baidu.com/view/2899077.htmMAKEINTRESOURCE是一个资源名转换的宏,VC的定义是(winuser.h):#define MAKEINTRESOURCEA(i) (LPSTR)((ULONG_PTR)((WORD)(i)))#define MAKEINTRESOURCEW(i) (LPWSTR)((ULONG_PTR)((WORD)(i)))#ifdef UNICODE#define MAKEINTRESOURCE MAKEINTRESOURCEW#else#define MAKEINTRESOURCE MAKEINTRESOU 阅读全文

posted @ 2013-03-29 16:52 pamxy 阅读(707) 评论(0) 推荐(0)

volatile
摘要:转自:百度百科 http://baike.baidu.com/view/608706.htm就象大家更熟悉的const一样,volatile是一个类型修饰符(type specifier)。它是被设计用来修饰被不同线程访问和修改的变量。如果没有volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器失去大量优化的机会。目录作用几个例子使用地方代码说明正确使用英文单词展开作用几个例子使用地方代码说明正确使用英文单词展开编辑本段作用volatile的作用: 作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值.简单地说就是防止编译器对代码进行优化.比如如下程 阅读全文

posted @ 2013-03-25 22:33 pamxy 阅读(197) 评论(0) 推荐(0)

EBP
摘要:转自:http://baike.baidu.com/view/1384237.htm扩展基址指针寄存器(extended base pointer) 其内存放一个指针,该指针指向系统栈最上面一个栈帧的底部。编辑本段寄存器[1]EbP与bp的关系就象AX与AL,AH的关系.BP为基指针(Base Pointer)寄存器,用它可直接存取堆栈中的数据,它的作用是在调用函数时保存ESP使函数结束时可以正确返回;加E(enhance)代表增强型寄存器,用于32位数据处理。 阅读全文

posted @ 2013-03-25 15:44 pamxy 阅读(286) 评论(0) 推荐(0)

esp
摘要:转自:http://baike.baidu.com/view/13800.htm1.ESP寄存器编辑本义项求助编辑espESP 扩展栈指针寄存器(Extended stack pointer)是指针寄存器的一种(另一种为EBP)。用于堆栈指针。ESP为栈指针,用于指向栈的栈顶(下一个压入栈的活动记录的顶部),而EBP为帧指针,指向当前活动记录的顶部。栈指针与帧指针标识出了当前活动记录的位置。当函数被调用的时候,执行如下操作:⒈将帧指针压入栈中:push ebp⒉用ebp保存当前栈指针:mov ebp,esp⒊使得栈指针自减,自减得到的内存应当能够被用来存储被调用函数的本地状态:sub 0CCh 阅读全文

posted @ 2013-03-25 15:42 pamxy 阅读(456) 评论(0) 推荐(0)

摘要:转自:http://baike.baidu.com/view/38877.htm栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为进栈(PUSH),删除则称为退栈(POP)。栈也称为后进先出表。栈 阅读全文

posted @ 2013-03-25 15:10 pamxy 阅读(216) 评论(0) 推荐(0)

stdcall详解
摘要:转自:http://blog.csdn.net/huanjieshuijing/article/details/5822942对_stdcall 的理解在C语言中,假设我们有这样的一个函数:int function(int a,int b)调用时只要用result = function(1,2)这样的方式就可以使用这个函数。但是,当高级语言被编译成计算机可以识别的机器码时,有一个问题就凸现出来:在CPU中,计算机没有办法知道一个函数调用需要多少个、什么样的参数,也没有硬件可以保存这些参数。也就是说,计算机不知道怎么给这个函数传递参数,传递参数的工作必须由函数调用者和函数本身来协调。为此,计算机 阅读全文

posted @ 2013-03-25 15:07 pamxy 阅读(476) 评论(3) 推荐(0)

__stdcall
摘要:转自:http://baike.baidu.com/view/1276580.htm百科名片被这些修饰关键字修饰的函数,其参数都是从右向左通过堆栈传递的(__fastcall 的前面部分由ecx,edx传),函数调用在返回前要清理堆栈,但由调用者还是被调用者清理不一定。目录函数调用约定MFC缺省调用约定名字修饰约定编辑本段函数调用约定__stdcall是函数调用约定的一种,函数调用约定主要约束了两件事:1.参数传递顺序2.调用堆栈由谁(调用函数或被调用函数)清理常见的函数调用约定:stdcall cdecl fastcall thiscall naked call__stdcall表示1.参数 阅读全文

posted @ 2013-03-25 14:58 pamxy 阅读(240) 评论(0) 推荐(0)

__declspec(dllimport)的作用
摘要:转自:http://blog.csdn.net/mniwc/article/details/7993361是时候总结一下__declspec(dllimport)的作用了。可能有人会问:__declspec(dllimport)和__declspec(dllexport)是一对的,在动态链接库中__declspec(dllexport)管导出,__declspec(dllimport)管导出,就像一个国家一样,有出口也有进口,有什么难理解的呢?这是一种很自然的思路,开始我也是这样理解。但是在两年前的一个项目中,我发现不用__declspec(dllimport)似乎也可以。比如现在我新建一个使 阅读全文

posted @ 2013-03-24 20:21 pamxy 阅读(335) 评论(0) 推荐(0)

大端模式和小端模式
摘要:转自:http://www.cnblogs.com/TsuiLei/archive/2008/10/29/1322504.html大端格式:在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中,如图2.1所示:小端格式:与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。如图2.2所示:请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1解答:int checkCPU( ){{union w{inta;char b;} c;c.a = 1; return(c.b ==1); 阅读全文

posted @ 2013-03-24 16:53 pamxy 阅读(272) 评论(0) 推荐(0)

深入浅出大端和小端
摘要:转自:http://www.52rd.com/Blog/Detail_RD.Blog_imjacob_14837.html端模式(Endian)的这个词出自Jonathan Swift书写的《格列佛游记》。这本书根据将鸡蛋敲开的方法不同将所有的人分为两类,从圆头开始将鸡蛋敲开的人被归为Big Endian,从尖头开始将鸡蛋敲开的人被归为Littile Endian。小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开。在计算机业Big Endian和Little Endian也几乎引起一场战争。在计算机业界,Endian表示数据在存储器 阅读全文

posted @ 2013-03-24 16:52 pamxy 阅读(439) 评论(0) 推荐(0)

移位运算符详解
摘要:移位运算符就是在二进制的基础上对数字进行平移。按照平移的方向和填充数字的规则分为三种:<<(左移)、>>(带符号右移)和>>>(无符号右移)。 在移位运算时,byte、short和char类型移位后的结果会变成int类型,对于byte、short、char和int进行移位时,规定实际移动的次数是移动次数和32的余数,也就是移位33次和移位1次得到的结果相同。移动long型的数值时,规定实际移动的次数是移动次数和64的余数,也就是移动66次和移动2次得到的结果相同。 三种移位运算符的移动规则和使用如下所示: <<运算规则:按二进制形式把所有的 阅读全文

posted @ 2013-03-24 16:42 pamxy 阅读(450) 评论(0) 推荐(0)

%操作符与/操作符(写给自己看,以防忘记)
摘要:先说说“/”操作符,这个操作符是我们平常的除法运算符,但在C或C++中,如果是两个int类型的变量相除(取整 )如:int a=7;int b=8;int c=0;c=a/b;C为零,在这里a为0~7,c的值都为零,这个是比较有用的(切记),特别是可以用在一些图像处理上面,如32位,位图每行对齐的字节数:int bytesPerLine= (width * bitDepth/8+3)/4 * 4; (这里的/4 * 4是有用的)------------------------------------------------------------------------------------ 阅读全文

posted @ 2013-03-24 16:02 pamxy 阅读(215) 评论(0) 推荐(0)