今天在网上看到了一篇写得非常好的文章,是有关c++类继承内存布局的。看了之后获益良多,现在转在我自己的博客里面,作为以后复习之用。——谈VC++对象模型(美)简.格雷程化 译译者前言一个C++程序员,想要进一步提升技术水平的话,应该多了解一些语言的语意细节。对于使用VC++的程序员来说,还应该了解一...
分类:
编程语言 时间:
2014-08-14 10:34:38
阅读次数:
424
1、在.proto文件中定义消息格式2、使用protobuf编译器3、使用c++ api来读写消息0、为何使用protobuf?1、原始内存数据结构,可以以二进制方式sent/saved.这种方式需要相同的内存布局和字节序。2、以ad-hoc方式将数据项编码成一个简单字符串----比如,将4个int...
分类:
编程语言 时间:
2014-08-14 01:15:47
阅读次数:
438
这篇文章主要讲解虚继承的C++对象内存分布问题,从中也引出了dynamic_cast和static_cast本质区别、虚函数表的格式等一些大部分C++程序员都似是而非的概念。原文见这里(By Edsko de Vries, January 2006) 敬告:本文是介绍C++的技术文章,假定读者对于C...
分类:
其他好文 时间:
2014-08-13 18:12:16
阅读次数:
234
linux进程地址空间详解(转载)在前面的《对一个程序在内存中的分析》中很好的描述了程序在内存中的布局,这里对这个结果做些总结和实验验证。下面以Linux为例(实验结果显示windows上的结果也一样)。我们还是利用前面看到过的这个图,如下图:32位X86机器的内存布局图,内存主要分为栈、堆、BSS...
分类:
系统相关 时间:
2014-08-12 21:31:44
阅读次数:
451
多态在C++中是一个重要的概念,通过虚函数机制实现了在程序运行时根据调用对象来判断具体调用哪一个函数。 具体来说就是:父类类别的指针(或者引用)指向其子类的实例,然后通过父类的指针(或者引用)调用实际子类的成员函数。在每个包含有虚函数的类的对象的最前面(是指这个对象对象内存布局的最前面)都有一...
分类:
编程语言 时间:
2014-08-09 22:57:49
阅读次数:
259
1、X86架构下的从开机到Start_kernel启动的总体过程
这个过程简要概述为:
开机——>BIOS——>GRUB/LILO——>Linux Kernel
其运行的流程图和重要函数如下图所示:
2、加载Linux内核(基于X86)的内存布局图
| |
0A0000 +--------------------------+
| Reserve...
分类:
系统相关 时间:
2014-08-07 15:43:23
阅读次数:
318
#对象内存布局分类讨论vc6变量查看器中(Locals,Watch1等),也可以看到部分对象布局的情况(不完整,且虚继承是错误的)。vs2005及以后版本的编译器提供了/d1reportSingleClassLayout[类名]编译选项来查看对象完整的内存布局:cl classLayout.cpp ...
分类:
编程语言 时间:
2014-07-30 14:41:43
阅读次数:
314
内存中对象的创建、对象的结构以及访问方式。
一、对象的创建
在语言层面上,对象的创建只不过是一个new关键字而已,那么在虚拟机中又是一个怎样的过程呢?
(一)判断类是否加载。虚拟机遇到一条new指令的时候,首先会检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号代表的类是否被加载、解析并初始化。如果没有完成这个过程,则必须执行相应类的加载。
(二)在堆上为对象分配空...
分类:
编程语言 时间:
2014-07-25 11:22:21
阅读次数:
261
YV12和NV12都是YUV420平面格式中的一种,其中YV12格式在我所接触的项目中使用得比较多,而NV12是Intel制定的的格式,在Intel的平台显示和支持性能最值,NV12 是用于 DirectX VA 的首选 4:2:0 像素格式。 关于YV12和NV12的内存布局格式说明如下:1.Y....
分类:
其他好文 时间:
2014-07-22 22:46:32
阅读次数:
6160
基于VMware的ecos,redboot及hello world(1)安装请参照[【ecos学习2】wmware运行redboot[方法二]--图形实现配置 ](2)修改内存布局文件:~/i386/ecos-3.0$ find . -name "mlt_i386_pc_floppy.ldi"./p...
分类:
数据库 时间:
2014-07-11 12:31:34
阅读次数:
370