C++静态库与动态库这次分享的宗旨是——让大家学会创建与使用静态库、动态库,知道静态库与动态库的区别,知道使用的时候如何选择。这里不深入介绍静态库、动态库的底层格式,内存布局等,有兴趣的同学,推荐一本书《程序员的自我修养——链接、装载与库》。什么是库库是写好的现有的,成熟的,可以复用的代码。现实中每...
分类:
编程语言 时间:
2014-12-17 09:44:07
阅读次数:
237
方法调用并不等同于方法执行,方法调用阶段唯一的任务就是确定调用方法的版本(即调用哪一个方法),暂时还不涉及方法内部的具体运行过程。在程序运行时,进行方法调用是最普遍、最频繁的操作。在Class文件的编译过程中不包含传统编译中的连接步骤,一切方法调用在Class文件里存储的都只是符号引用,而不是方法在实际运行时内存布局中的入口地址(相当于直接引用)。这个特性给Java带来了更强大的动态扩展能力,但也...
分类:
编程语言 时间:
2014-12-14 15:56:34
阅读次数:
236
原文转载地址:http://see.xidian.edu.cn/cpp/html/476.html在原文的基础上增加自己的思想作为自己的修改指针数组和数组指针的内存布局初学者总是分不出指针数组与数组指针的区别。其实很好理解:指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决...
分类:
编程语言 时间:
2014-12-05 12:08:28
阅读次数:
244
1、纸上得来总觉浅,低头debug才深刻。
对于《深度探索C++对象模型》这类型的书,得到的知识要去及时巩固才能实现永久记忆。
2、在实现了了虚拟继承归并分支之后的内容布局跟虚表的可复用存在极大关系。
继承的顺序决定了A和B的布局顺序,然后Common则在高地址,即公虚基类的布局放在D的尾部。
情况1:
class A:public virtual Common{...}...
分类:
其他好文 时间:
2014-12-04 23:15:50
阅读次数:
263
上面一节已经探究出this指针的辨别,由this指针就可以看到类的内容。在这里,就由this指针来看一下类的成员变量是如何排列。
先看一个例子
1 #include
2 class xuzhina_dump_c06_s2
3 {
4 private:
5 short m_c;
6 char m_d;
7 ...
分类:
编程语言 时间:
2014-11-30 10:21:23
阅读次数:
239
在探究完C风格数据结构内存布局之后,接着探究C++风格数据结构内存布局。
虽然最简单的类是没有任何成员变量和成员函数,但由于没什么意义,不值得探究。在这里,就先探究一下没有任何成员变量和虚函数,只有成员函数的类。
先看一下例子:
1 #include
2 class xuzhina_dump_c06_s1
3 {
4 public:
5 ...
分类:
编程语言 时间:
2014-11-25 23:41:38
阅读次数:
264
1. Shared Library的优势
共享库,又称动态库或so文件,顾名思义,它可以在可执行文件启动时加载或进程运行期被调用。使用共享库有很多好处,例如(包含但不限于下面提到的场景):
1) 减少了依赖共享库的模块的大小,因为它们不必把共享库提供的功能的实现代码静态编译到自己的模块代码中。
2)在同一台机器上运行的多个进程会在内存中共享同一份动态库,操作系统采用的这种内存布局方式可以极大...
分类:
系统相关 时间:
2014-11-24 15:27:52
阅读次数:
473
变量的类型按作用范围可以把变量分为局部变量和全局变量参数的类型实参和形参变量的内存分配——静态和动态静态变量的声明关键字:static动态变量的声明,内存的动态分配可以使用函数malloc(字节数)栈机制——运行时内存布局(Runtime Memory Layout)一个程序要运行,就要先将可执行文...
分类:
其他好文 时间:
2014-11-23 23:11:26
阅读次数:
326
在C语言中,联合体(union)有点像结构体那样,把不同类型的数据组织起来,但和结构体不大一样,在结构体各成员有各自的内存空间,一个结构体对象的总长度是各成员长度之和。而在联合体中,各成员共享一段内存空间,一个联合体对象的长度等于各成员中最长的长度。
由上面描述可知,联合体应该具备多面性,即在汇编层面上,有时候会显示结构体的特征,或数组特征,或其它基本数据类型特征。
先看一下例子:
1 ...
分类:
系统相关 时间:
2014-11-22 17:27:57
阅读次数:
204
这次分享的宗旨是——让大家学会创建与使用静态库、动态库,知道静态库与动态库的区别,知道使用的时候如何选择。这里不深入介绍静态库、动态库的底层格式,内存布局等,有兴趣的同学,推荐一本书《程序员的自我修养——链接、装载与库》。什么是库库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基...
分类:
编程语言 时间:
2014-11-21 17:59:47
阅读次数:
297