- 博客(8)
- 资源 (50)
- 问答 (1)
- 收藏
- 关注
原创 从汇编看c++中指向成员变量的指针(一)
在c++中,指向类成员变量的指针存储的并不是该成员变量所在内存的地址,而仅仅是该成员变量在该类对象中相对于对象首地址的偏移量。因此,它必须绑定到某一个对象或者对象指针上面,这里的对象和对象指针,就相当于充当了this指针的容器。下面先看c++源码以及输出结果: #include <iostream>#include <cstdio>usin...
2013-06-23 16:01:00 178
原创 从汇编看c++中的虚拟继承及内存布局(二)
下面是c++源码:class Top {//虚基类public: int i; Top(int ii) { i = ii; } virtual int getTop() { cout << (long)this << endl; return 1; ...
2013-06-22 21:20:00 163
原创 c+中如何查看一个类的内存布局
假设你在目录有个c:\a.cpp文件 ,里面有个类test。如果想查看test的内存布局,可以按如下操作:1 打开命令行cmd2 切换到cpp源文件所在目录,这里切到c盘3 输入如下命令 cl a.cpp -d1 reportSingleClassLayouttest 上述方法只有在可以用命令行编译cpp源文件时才成立 也可以用vs2010打开cmd具体方法是:菜单
2013-06-22 04:14:56 2039
原创 从汇编看c++的虚拟继承以及其内存布局(一)
先看第一种最简单的情形,所有类中没有任何虚函数的菱形继承。下面是c++源码:class Top {//虚基类public: int i; Top(int ii) { i = ii; }};class Left : public virtual Top {public: int j; Lef...
2013-06-22 01:44:00 164
原创 从汇编看c++对静态成员的存取
c++中静态成员变量不存在于对象之中,而存在于全局数据段,只是其可见性受到限制,仅能被所属类访问,而非静态成员变量存在于对象中,因而,在访问两种不同数据成员时,会有些许差别。对于静态数据成员的访问,是直接操作其所在内存;对于非静态数据成员,则是由对象首地址 + 成员变量相对于对象首地址的偏移量来访问(对涉及到虚拟继承可能更复杂),有一定的间接性。下面看c++源码:class X ...
2013-06-21 21:31:00 136
原创 从汇编看c++内联函数评估求值
在c++中,一个inline函数实体,在整个class 声明未被完全看到之前,是不会被评估求值的,也就是说,对于类里面内联的成员函数本身的分析,要等到class的声明完全结束之后才开始。下面试c++源码:extern int x;//外部声明的xclass X {public: float getX() const { return x;/...
2013-06-21 21:22:00 132
原创 从汇编看c++初始化列表初始化成员变量
简略来说,编译器会对初始化列表按照成员变量的声明顺序重新一一排序,安插到构造函数中进行初始化操作,而且这些初始化操作在构造函数里面用户自己定义的任何代码之前。下面是c++源码:class X {private: int i; int j; int k; int l;public: X() : j(1), i(2), l...
2013-06-17 02:13:00 150
Mac OS X and iOS Internals:To the Apple’s Core.pdf
2020-11-17
Ecma-262规范
2020-11-17
AdvanceAppleDebugging_v0.9.1_SourceCode
2020-11-17
Unicode Standrad
2015-09-24
Git书籍两本打包
2015-09-24
elementary functions
2015-09-24
由于axis2的三本英文书籍
2015-09-24
C89以及Rational
2014-11-26
linux只能连接无密码wifi,无法连接有密码wifi
2015-09-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人