C and C++ Common Knowledge

-1,程序中各段的意义如下:.text(代码段):用来存放可执行文件的操作指令,也就是说是它是可执行程序在内存种的镜像。.data(数据段):数据段用来存放可执行文件中已初始化全局变量,也就是存放程序静态分配的变量和全局变量。.rodata(只读段):该段保存着只读数据,在进程映象中构造不可写的段...

2006-03-23 12:59:00

阅读数 1412

评论数 0

Windows XP 快上几倍的三招

Windows XP 快上几倍的三招Windows XP 快上几倍的三招,很简单:     1 、减少开机磁盘扫描等待时间,开始 → 运行,键入: chkntfs /t : 0     2 、删除系统备份文件:      在各种软硬件安装妥当之后,其实 XP 需要更新文件的时候就很少了。开始 →...

2007-09-09 23:57:00

阅读数 1474

评论数 0

深入浅出Win32多线程程序设计之线程通信

深入浅出Win32多线程程序设计之线程通信作者:宋宝华 出处:天极开发线程之间通信的两个基本问题是互斥和同步。简介  线程之间通信的两个基本问题是互斥和同步。  线程同步是指线程之间所具有的一种制约关系,一个线程的执行依赖另一个线程的消息,当它没有得到另一个线程的消息时应等待,直到消息到达时才被唤...

2007-09-09 23:41:00

阅读数 814

评论数 0

C++基本概念在编译器中的实现

  对于C++对象模型,相信很多程序员都耳熟能详。本文试图通过一个简单的例子演示一些C++基本概念在编译器中的实现,以期达到眼见为实的效果。      1、对象空间和虚函数     1.1 对象空间       在我们为对象分配一块空间时,例如:        CChild1 *pChild = ...

2007-09-09 19:46:00

阅读数 922

评论数 0

潘凯:C++对象布局及多态实现的探索(十三)

代码中所定义类的简单说明C000:空类。C010:带普通成员函数及/或变量的顶层类。C011:带普通成员函数及/或变量的顶层类。C012:带静态成员函数及变量的顶层类。C013:从C010继承的有成员变量及覆盖父类普通成员函数的类。C014:从C011继承的空类。C015:从C010,C011继承...

2007-09-08 23:41:00

阅读数 917

评论数 0

潘凯:C++对象布局及多态实现的探索(十二)

后记  结合前面的讨论,我们可以看到,只要牵涉到了虚继承,在访问父类的成员变量时生成的代码相当的低效,需要通过很多间接的计算来定位成员变量的地址。在指针类型转换,动态转型,及虚函数调用时,也需要生成很多额外的代码来调整this指针。象前一篇中对C170对象的obj.foo()和obj.f170()...

2007-09-08 23:38:00

阅读数 1072

评论数 0

潘凯:C++对象布局及多态实现的探索(十一)

菱形结构的虚继承(3)  最后我们看看,如果在上篇例子的基础上,子类及左、右父类都各自定义了自己的虚函数,这时的情况又会怎样。struct C140 : public virtual C041{    C140() : c_(0x02) {}    virtual void foo() { c_ ...

2007-09-08 23:36:00

阅读数 886

评论数 0

潘凯:C++对象布局及多态实现的探索(十)

  菱形结构的虚继承(2)  我们再看一个例子,这个例子的继承结构和上一篇中是一样的,也是菱形结构。不同的是,每一个类都重写了顶层类声明的虚函数。代码如下:struct C041{    C041() : c_(0x01) {}    virtual void foo() { c_ = 0x02;...

2007-09-08 23:35:00

阅读数 937

评论数 0

潘凯:C++对象布局及多态实现的探索(九)

  菱形结构的虚继承  这次我们看看菱形结构的虚继承。虚继承的引入本就是为了解决复杂结构的继承体系问题。上一篇我们在讨论虚继承时用的是一个简单的继承结构,只是为了打个铺垫。  我们先看看这几个类,这是一个典型的菱形继承结构。C100和C101通过虚继承共享同一个父类C041。C110则从C100和...

2007-09-08 23:32:00

阅读数 1020

评论数 0

潘凯:C++对象布局及多态实现的探索(八)

  普通的虚继承  下面我们来看虚继承。首先看看这C020类,它从C010虚继承:struct C010{    C010() : c_(0x01) {}    void foo() { c_ = 0x02; }    char c_;};struct C020 : public virtual ...

2007-09-08 23:30:00

阅读数 1148

评论数 0

潘凯:C++对象布局及多态实现的探索(七)

   构造函数中的虚成员函数调用  在构造函数中调用虚成员函数,虽然这是个不很常用的技术,但研究一下可以加深对虚函数机制及对象构造过程的理解。这个问题也和一般直观上的认识有所差异。先看看下面的两个类定义。struct C180{C180() { foo(); this->foo();}vir...

2007-09-08 23:29:00

阅读数 1375

评论数 0

潘凯:C++对象布局及多态实现的探索(六)

  虚函数调用  我们再看看虚成员函数的调用。类C041中含有虚成员函数,它的定义如下:struct C041{    C041() : c_(0x01) {}    virtual void foo() { c_ = 0x02; }    char c_;};  执行如下代码:C041 obj;...

2007-09-08 23:27:00

阅读数 1136

评论数 0

潘凯:C++对象布局及多态实现的探索(五)

  普通成员函数的调用  从这部分开始我们除了利用内存的信息打印来进行探索外,更多的会通过跟踪和观察编译器产生的汇编代码来理解编译器对这些语言特性的实现方式。汇编方面知识的讨论超出了本文的范围,我只对和我们讨论相关的汇编代码进行解析。理解本文要讨论的知识并不需要有很完整的汇编知识,但必须了解起码的...

2007-09-08 23:25:00

阅读数 961

评论数 0

潘凯:C++对象布局及多态实现的探索(四)

类型动态转换和类型强制转换  为了验证前面提到过的类型动态转换(即dynamic_cast转换),以及对象类型的强制转换。我们利用前面定义的C041、C042及C082类来进行验证。  运行下列代码:c082.C041::c_ = 0x05;PRINT_VTABLE_ITEM(c041, 0, 0...

2007-09-08 23:21:00

阅读数 1026

评论数 0

潘凯:C++对象布局及多态实现的探索(三)

带虚函数的类的对象布局(2)  接下来我们看看多重继承。定义两个类,各含一个虚函数,及一个数据成员。再从这两个类派生一个空子类。struct C041{    C041() : c_(0x01) {}    virtual void foo() { c_ = 0x02; }    char c_;...

2007-09-08 23:19:00

阅读数 866

评论数 0

潘凯:C++对象布局及多态实现的探索(二)

  带虚函数的类的对象布局(1)  如果类中存在虚函数时,情况会怎样呢?我们知道当一个类中有虚函数时,编译器会为该类产生一个虚函数表,并在它的每一个对象中插入一个指向该虚函数表的指针,通常这个指针是插在对象的起始位置。所谓的虚函数表实际就是一个指针数组,其中的指针指向真正的函数起始地址。我们来验证...

2007-09-08 23:16:00

阅读数 947

评论数 0

潘凯:C++对象布局及多态实现的探索(一)

 前言  本文通过观察对象的内存布局,跟踪函数调用的汇编代码。分析了C++对象内存的布局情况,虚函数的执行方式,以及虚继承,等等。  写这篇文章源于我在论坛上看到的一个贴子。有人问VC使用了哪种方式来实现虚继承。当时我写了一点代码想验证一下,结果发现情况比我想象的要复杂。所以我就干脆认真把相关的问...

2007-09-08 23:13:00

阅读数 1083

评论数 0

TCP三次握手在linux内核中的实现

TCP三次握手在linux内核中的实现 以下基于linux内核2.4.0源码(转自www.yuanma.org/)    以前一直使用的网络通讯的函数都是工作在阻塞模式。在看connect实现源码时,突然想到tcp/ip的三次握手在内核如何实现的,尤其是在非阻塞模式下式,涉及到等待对端回送ack包...

2007-04-05 23:00:00

阅读数 2642

评论数 0

虚拟机使用功略(一) 怎样在Windows XP中安装虚拟网卡

 些大型设计软件如Pro/E ,UG 等都基于网络的,对电脑的软硬件的要求比较高.软件方面,它必须运行在NT结构的操作系统中(Win2000,WinXP,Win2003),硬件上还要求电脑安装有网卡.那么,假如一台高配置的电脑并安装有适合的操作系统,而只因为少装了一块网卡,就成为无法安装这些软件的...

2007-02-25 21:51:00

阅读数 3583

评论数 0

TCP/IP 网络基础 (v 0.2b)

作者:北南南北来自:LinuxSir.Org目录1、TCP/IP 概述;1.1 什么是IP、ARP、ICMP、UDP;1.2 TCP/IP 网络模型;2、IP地址、网络类型、网络切割;2.1 IP 地址概说;2.2 网络分类;2.21 A类网络:2.22 B类网络:2.23 C类网络:2....

2007-02-25 13:58:00

阅读数 802

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭