之前介绍过了普通对象比如系统自带的int等对象的对齐方式,在学习类型转换的时候遇到了自定义类型的继承体系中的downcast与upcast. 于是顺藤摸瓜,摸到了这里.发现还是 陈皓的博客里面写的最早也最易懂.http://blog.csdn.net/haoel/article/details/30 ...
分类:
编程语言 时间:
2017-01-04 20:01:32
阅读次数:
224
1、在.proto文件中定义消息格式 2、使用protobuf编译器 3、使用c++ api来读写消息 0、为何使用protobuf? 1、原始内存数据结构,可以以二进制方式sent/saved.这种方式需要相同的内存布局和字节序。 2、以ad-hoc方式将数据项编码成一个简单字符串 比如,将4个i ...
分类:
编程语言 时间:
2016-12-26 18:31:15
阅读次数:
434
1)第一个对编程思维发生重大认识是 接口。感觉认识了接口,抽象后。才知道程序原来可以这样。 2)第二个是递归,理解了递归后,之前很多模糊的理解,立刻清晰。 3)第三个是程序的内存布局,和接口一样,之前很多的疑惑,立刻消失,有拨云见日的感觉。有了一个从低层次解释一些问题的灯塔。 4)第四个是模板,初写 ...
分类:
其他好文 时间:
2016-12-23 22:18:43
阅读次数:
179
C语言程序的内存布局 一:C语言程序的存储区域 C语言编写的程序经过编绎-链接后,将形成一个统一的文件,它由几个部分组成,在程序运行时又会产生几个其他部分,各个部分代表了不同的存储区域: 1.代码段(Code or Text): 代码段由程序中的机器码组成。在C语言中,程序语句进行编译后,形成机器代 ...
分类:
编程语言 时间:
2016-12-08 23:57:04
阅读次数:
464
一、方法解析 Class 文件的编译过程中不包含传统编译中的连接步骤,一切方法调用在 Class 文件里面存储的都只是符号引用,而不是方法在实际运行时内存布局中的入口地址。 因此,想要使用这些符号引用必须经过转换,转换为直接引用,即内存中一个地址,可以直接指向方法本身。但是,转换的时机随着方法不同而 ...
分类:
其他好文 时间:
2016-11-11 00:54:02
阅读次数:
198
class A {}; class B : public virtual A {}; class C : public virtual A {}; class D : public B, public C {}; int main() { A a; B b; C c; D d; cout << si ...
分类:
编程语言 时间:
2016-11-01 01:10:47
阅读次数:
272
GDB调试C++类Linux上调试常用的工具就是gdb了。借助学习C++虚函数表和内存布局的机会顺便学习下gdb常规调试技巧。一,测试用例1,C++头文件(szyu_test_gdb.h)/******************************
*
*Author:szyu
*
*Date:2016.10.25
*
********************************/
#ifndef..
分类:
数据库 时间:
2016-10-27 01:45:29
阅读次数:
212
常量池中是否有Ljava.lang.Object ...
分类:
编程语言 时间:
2016-10-14 20:49:09
阅读次数:
149
c语言在嵌入式、操作系统、图像处理方面应用广泛,是一种比较底层的语言。本文主要介绍c语言的内存分配,进程在内存中的布局。环境:Linuxzhuzhu4.2.0-27-generic#32~14.04.1-UbuntuSMPgccversion4.4.7首先上一张进程在内存中的布局图:注:该图仅表示进程在32位linux操作系统..
分类:
其他好文 时间:
2016-10-08 03:04:35
阅读次数:
401
单继承的例子: 实验结果: 结论:单继承情况下基类没有虚函数,派生类存在虚函数时,派生类的vptr会被放在最前面,接着是基类数据成员,然后是派生类数据成员。 多重继承的例子: ...
分类:
其他好文 时间:
2016-10-06 12:40:50
阅读次数:
203