环境:Linux,redhat 当一段程序被编译成为一个可执行的文件时,这个时候它已经被划分成代码段、数据段、栈段、.bss段、堆等部分。 各段的作用是: 1.代码段(.text):代码,全局常量(const),只读变量和字符串常量(有可能在代码段,一般被放在只读数据".rodata"段,还有可能就... ...
分类:
系统相关 时间:
2016-07-11 18:57:19
阅读次数:
208
一.虚函数(1)C++中的虚函数的主要作用:实现了多态的机制。(2)多态:用父类型的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法..
分类:
其他好文 时间:
2016-06-27 00:08:45
阅读次数:
451
代码段:用来存放程序执行代码的一块内存区域。这部分内存大小在程序运行前已经知道,通常属于只读,其中包括只读的字符串常量,不可改变 BBS段:用来存放存放程序中未初始化的全局变量及静态变量,属于静态内存分配。 数据段:用来存放已初始化的全局变量及静态变量,属于静态内存分配。 堆:用来存放在程序运行中被 ...
分类:
编程语言 时间:
2016-06-17 14:10:34
阅读次数:
168
一个进程的数据在内存中的布局如下图: bss段(bss segment):可读可写不可执行,通常用来存放程序中未初始化的全局变量。bss是英文Block Started by Symbol的简称。bss段属于静态内存分配。 data段(data segment):可读可写不可执行,通常用来存放程序中 ...
分类:
编程语言 时间:
2016-06-12 14:03:07
阅读次数:
224
字符串回顾 一个字符串由一个或多个字符组成,因此我们可以用字符数组来存放字符串,不过在数组的尾部要加上一个空字符'\0'。 上面的代码定义了一个字符数组s来存储字符串"mj",系统会自动在尾部加上一个空字符'\0'。 内存分布大致如右图所示: 从上一篇文章《十二、指向一维数组元素的指针》中可以看出指 ...
分类:
编程语言 时间:
2016-06-06 18:43:57
阅读次数:
153
1.背景 Spark平台以分布式内存计算的模式达到更高的计算性能,然而,分布式内存计算的模式也是一柄双刃剑,在提高性能的同时不得不面对分布式数据存储所产生的问题,具体问题主要有以下几个: 1) 当两个Spark作业需要共享数据时,必须通过写磁盘操作。比如:作业1要先把生成的数据写入HDFS,然后作业 ...
分类:
其他好文 时间:
2016-06-06 16:32:38
阅读次数:
185
今天在学习《Unix环境高级编程》,第七章进程环境给出了一个进程的内存分布示意图,从下往上依次为“正文段->初始化数据->未初始化数据(默认初始化为0)->堆(从低地址到高地址)->栈(从高地址到低地址)->命令行参数和环境变量”。其中的正文段也叫代码段,是可共享的,只读的。 这个时候我就想到上次做 ...
分类:
编程语言 时间:
2016-06-05 21:23:02
阅读次数:
180
书上类继承相关章节到这里就结束了,这里不妨说下C++内存分布结构,我们来看看编译器是怎么处理类成员内存分布的,特别是在继承、虚函数存在的情况下。 工欲善其事,必先利其器,我们先用好Visual Studio工具,像下面这样一步一步来: 先选择左侧的C/C++->命令行,然后在其他选项这里写上/d1 ...
分类:
编程语言 时间:
2016-05-31 15:44:25
阅读次数:
194
C++内存分布 虚表 虚指针:
class Base
{
public:
int m_base;
}; class DerivedA: public Base
{
public:
int m_derivedA;
}; class DerivedB: public Base
{
public:
int m_derivedB;
}; class D...
分类:
编程语言 时间:
2016-05-18 19:08:44
阅读次数:
287