摘要: #include <iostream>#include <iomanip>using namespace std;template <class T>class node //节点{public:T data; node *next;};template <class T>class list{public:list();void Create(); //创建链表bool Empty() const; //判断链表是否为空void InsertLast(const T e); //从尾部插入一个元素void InsertFirst(const T 阅读全文
posted @ 2011-08-17 22:49 Lee.Kevin 阅读(6911) 评论(1) 推荐(3) 编辑
摘要: 写出一个struct,然后sizeof,你会不会经常对结果感到奇怪?sizeof的结果往往都比你声明的变量总长度要大,这是怎么回事呢?讲讲字节对齐吧./******************************分割线如果体系结构是不对齐的,A中的成员将会一个挨一个存储,从而sizeof(a)为11。显然对齐更浪费了空间。那么为什么要使用对齐呢?体系结构的对齐和不对齐,是在时间和空间上的一个权衡。对齐节省了时间。假设一个体系结构的字长为w,那么它同时就假设了在这种体系结构上对宽度为w的数据的处理最频繁也是最重要的。它的设计也是从优先提高对w位数据操作的效率来考虑的。比如说读写时........ 阅读全文
posted @ 2011-08-17 20:23 Lee.Kevin 阅读(795) 评论(0) 推荐(1) 编辑
摘要: 内存的使用规则:在使用malloc()或new申请空间时,要检查有没有分配空间成功,判断方法是判断指针是否为NULL,如申请一块很大的内存而没有这么大的内存则分配内存会失败;申请成功后最好是将该内存清空,使用memset()后ZeroMemory()清空,不然存在垃圾而造成有时候输出很大乱码;不要忘记为数组和动态内存赋初值,防止将未被初始化的内存作为右值使用;要防止数组或指针内存越界;申请内存成功后,使用结束后要释放,系统不会自动释放手动分配的内存;内存释放后,指针还是指向那块地址,不过这指针已经是“野指针”了,所以释放内存后指针要指向NULL,不然很危险,容易出错,if()对野指针的判断不起 阅读全文
posted @ 2011-08-17 20:19 Lee.Kevin 阅读(692) 评论(0) 推荐(0) 编辑
摘要: memest原型(pleasetype"manmemset"inyourshell)void*memset(void*s,intc,size_tn);memset:作用是在一段内存块中填充某个给定的值,它对较大的结构体或数组进行清零操作的一种最快方法。常见的三种错误第一:搞反了c和n的位置.一定要记住如果要把一个chara[20]清零,一定是memset(a,0,20)而不是memset(a,20,0)第二:过度使用memset,我想这些程序员可能有某种心理阴影,他们惧怕未经初始化的内存,所以他们会写出这样的代码:charbuffer[20];memset(buffer,0 阅读全文
posted @ 2011-08-17 18:32 Lee.Kevin 阅读(1253) 评论(5) 推荐(2) 编辑