- 博客(27)
- 收藏
- 关注
原创 不开心的一天
不知道今天怎么了,真的是很不高兴,坐地铁回来的路上,有点难过。没有特别不高兴的事,可是几件小事合起来就有点郁闷了。可能是自己心态的原因吧,为什么要这样想,是习惯心态, 需要改正? 中午我没带饭,想和别人一起去吃,可是都被拒绝了。其实也不是别人的错,每个人都有自已的选择啊。只是想到以前,如果是她们,肯定不会拒绝我,所以心里就特别委屈。 下午下班的时候,发布的版本叫我们再测试一下,我有个不稳定触发的bug,找了很久才发生,而且还不知道该怎么改。组长一直在等着我改好,一直都没有回家。最后还是同桌帮忙改的,觉得好
2010-06-28 22:29:00
442
原创 同步 I/O 与异步 I/O 之间的差别
同步 I/O 与异步 I/O 之间的差别数据传输可以是同步的,也可以是异步的。决定因素取决于调度传输的入口点是立即返回还是等到 I/O 操作完成之后。 read(9E) 和 write(9E) 入口点都是同步入口点。传输在 I/O 操作完成之前不得返回。待例程返回值时,进程就会知道传输是否成功。 aread(9E) 和 awrite(9E) 入口点都是异步入口点。异步入口点调度 I/O 并立即
2009-11-09 20:50:00
1212
原创 结构体对齐
先让我们看四个重要的基本概念:1.数据类型自身的对齐值: 对于char型数据,其自身对齐值为1,对于short型为2,对于int,float,double类型,其自身对齐值为4,单位字节。2.结构体或者类的自身对齐值:其成员中自身对齐值最大的那个值。3.指定对齐值:#pragma pack (value)时的指定对齐值value。4.数据成员、结构体和类的有效对齐值:自身对齐值和指定对齐值中小
2009-11-08 19:57:00
341
原创 为什么构造函数不能声明为虚
为什么构造函数不能声明为虚:1、从使用的角度:虚函数的作用在于通过父类的指针或者引用来调用它的时候能够变成调用子类的那个成员函数。而构造函数是在创建对象时自动调用的,不可能通过父类的指针或者引用去调用,因此也就规定构造函数不能是虚函数。 2、从存储的角度虚函数对应一个vtable,这大家都知道,可是这个vtable其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,
2009-11-08 11:38:00
719
原创 拷贝构造函数
#include class human{public:human(){ human_num++;};static int human_num;~human(){human_num--;print();}void print(){cout}protected:private:};int human::human_num = 0;human f1(human x){x.print();ret
2009-11-07 20:02:00
356
原创 memcpy / strcpy / memset
////**************memcpy*************************//void *memcpy(void *dest, const void *src, size_t count) { char *tmp = (char *)dest; const char *s = (char *)src; while (count--) *tmp++ = *s++;
2009-11-07 15:43:00
350
原创 作用域
define是没有作用域的, 也没有什么public, private之分的, 就相当于一个全局的变量, 什么都可以使用typedef的作用域跟变量一样。const 更大
2009-11-01 21:23:00
234
原创 小细节
void fun(){ static int a = 1; a++; cout} main 调这个函数两次,输出的值将是2,3静态变量的生命周期为整个文件,但是可见性为此函数内,因为它是一个局部变量。
2009-10-24 14:55:00
241
原创 操作链表
// Prime C.cpp : Defines the entry point for the console application.//#include "stdafx.h"#includeusing namespace std;typedef struct Link{ int ia; struct Link* next;}LinkNode;LinkNode* Inlitialize
2009-10-24 14:41:00
318
原创 关于递归
还有一种利用递归逆转链表的方法。这种方法的基本思想是在反转当前节点之前先调用递归函数反转后续节点。源代码如下。不过这个方法有一个缺点,就是在反转后的最后一个结点会形成一个环,所以必须将函数的返回的节点的next域置为NULL。因为要改变head指针,所以我用了引用。算法的源代码如下: linka* reverse(linka* p,linka*& head) { if(p == NULL || p
2009-10-24 14:37:00
269
原创 构造函数与对象指针
#include "stdafx.h"#includeusing namespace std;class A{public: A() { cout }protected:private:};class B: public A{public: B() { cout }};int _tmain(int argc, _TCHAR* argv[]){ A*pa = new B; 这里只申明A类型
2009-10-24 08:11:00
413
原创 《活着》有感
之前几个朋友对我感慨余华的《活着》,今天一口气看完眼睛都肿了,生命真的好脆弱(除了福贵以外)。亲人一个一个离开的时候 ,悲痛,平静,安详、、、、有几次庆幸,以为从此以后生活会转折,没想到接着的都是更大的悲痛。不知道这一切该归咎于谁,年少轻狂的过错?世态无知的过错?贫穷落后的过错?都错了,每一次的错误都是以生命作为代价,太昂贵了。还好,生者每次都能放开心怀,重新面对生活,重来都没有彻底放弃过
2009-09-28 16:24:00
356
原创 指针参数是如何传递内存的--刘锐
void GetMemory(char *p, int num){ p = (char *)malloc(sizeof(char) * num);}void Test(void){ char *str = NULL; GetMemory(str, 100); // str 仍然为 NULL strcp
2009-09-27 16:47:00
1274
原创 new/delete 的使用要点--刘锐
运算符new使用起来要比函数malloc简单得多,例如:int *p1 = (int *)malloc(sizeof(int) * length);int *p2 = new int[length];这是因为new内置了sizeof、类型转换和类型安全检查功能。对于非内部数据类型的对象而言,new在创建动态对象的同时完成了初始化工作。如果对象有多个构造函数,那么new的语句也
2009-09-27 16:27:00
827
原创 初学STL
一直对STL不熟悉,用的时候也想不到,今天系统归纳一下。区间(it1, it2)其范围为it1到it2,补包括it21.vectorstruct Review{ string title; int price;};bool FillReview(Review& rr){ cout getline(cin, rr.title); if("Quit" == rr.title) { ret
2009-09-27 15:56:00
314
转载 静态库,静态链接,动态链接 的区别
遗憾地说:除了ender说的(静态库在程序运行时就会装入内存,而动态库在调用的时候才装入!)是正确的外,其他观点都有偏颇之处甚至是错误的。我的感觉是,大家受MFC的影响太深了,而没有看到事情的本质。 首先纠正所谓“静态连接就是把需要的库函数放进你的exe之中”的说法。在真实世界中,有三个概念:Use static libary, static linked DLL,
2009-09-17 11:24:00
403
原创 指针++的含义
#include "stdafx.h"#include "iostream"using namespace std;int _tmain(int argc, _TCHAR* argv[]){ int a[] = {1, 2, 3, 4, 5, 6}; int (*p)[3] = reinterpret_cast(a + 1); cout int *p2 = a; p2++;// p2指向的是
2009-09-17 08:19:00
1140
转载 函数 指针 数组
一、指针数组与数组指针*p[2]:指针数组。 按照符号优先级来看,下标[ ]优先于指针*,所以可以看作是*(p[2]),那么应该首先是一个数组p[2]。而该数组的每个元素都是指针。 (*p)[2]:数组指针。按照符号优先级来看,括号( )优先于[ ],那么应该首先是一个指针。而该指针指向一个数组。二、指针函数与函数指针*p( ):指针函数。理解方法同上,该函数的值是一个指针。(
2009-09-16 08:21:00
316
转载 堆与栈的区别
【转】栈 与 堆 的区别embed_design /峰 发表于2006-10-19, 12:28 【转】栈 与 堆 的区别 堆与栈有什么区别?一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由
2009-09-14 17:36:00
318
转载 结构体与内存分配
VC中结构体内存分配问题透析 在一次面试中,遇到了VC中处理结构体的问题,由于平时没留意,没有回答出来,感觉很不爽。回来后,认真分析了下,查了些资料,终于找到原因,故以本文给出解答。 本文首先提出了处理VC++中结构体时应注意的一个问题,然后详细分析了存在该问题的原因,最后做实战训练。 注意: (1)在VC下,下面各类型占字节数为:
2009-09-14 16:56:00
413
原创 STL map常用操作简介
1。目录 map简介 map的功能 使用map 在map中插入元素 查找并获取map中的元素 从map中删除元素 2。map简介 map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。 3。map的功能 自动建立Key - value的对应
2009-09-13 16:26:00
265
原创 奇怪的脑子
以前学生的时候,没钱,还经常喜欢买这买那;现在工作挣钱了,看到喜欢的东西,又舍不得买了。怎么就变事俗了,总是羡慕别人,别人有的自己也想有,就开始节约了,想攒到。我变物质化了。以前觉得大人的行为不可理解,现在隐约体会到了。
2009-09-12 22:55:00
233
原创 改桌面
装的WIN 7过期了,一会儿就黑屏了,恼火,写了个更换壁纸的toolSystemParametersInfo (SPI_SETDESKWALLPAPER, 0, L"C://Windows//Web//Wallpaper//Windows//img0.jpg", SPIF_SENDWININICHANGE| SPIF_UPDATEINIFILE);挺好用。
2009-09-12 15:45:00
289
原创 DLL 文件加载过程
启动一个可执行模块的时候,操作系统的加载程序会先为进程创建虚拟地址空间,接着把可执行模块映射到进程的地址空间中.之后加载程序会检查可执行模块的导入段, 试图对所需的DLL进行定位并将它们映射到进程的地址空间中.由于导入段只包含DLL的名称,不包含DLL的路径,因此加载程序必须在用户的磁盘上搜索DLL.下面是加载程序的搜索顺序:(1) 包含可执行文件的目录;(2) Windows
2009-07-31 16:59:00
1821
原创 手动重置事件和自动重置事件
有两种不同类型的事件: 手动重置事件和自动重置事件 自动重置: SetEvent之后, 事件自动重置为未触发状态 手动重置: SetEvent之后, 需要调用ResetEvent事件才置为未触发状态 区别: 当一个手动重置事件被触发的时候, 正在等待该事件的所有线程都变为可调度状态; 当一个自动重置事件被触发的时候, 只有一个正在等待该事件的线程会变为可调度状态. 系统并不会保证会调度
2009-07-28 20:46:00
4178
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人