代码段:用来存放程序执行代码的一块内存区域。这部分内存大小在程序运行前已经知道,通常属于只读,其中包括只读的字符串常量,不可改变 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
一、启动模式,决定向量表的位置当CPU上电后,首先代码区(Flash)应该从地址为0x00000000开始,而数据区(SRAM)应该从0x20000000开始,Cortex-M3CPU总是通过代码区获得复位向量。STM32F10XXX微处理器中运用了特殊的机制使得STM32不仅可以通过Flash(主闪存和系统闪存)启动,..
分类:
其他好文 时间:
2016-06-10 15:07:28
阅读次数:
623
一、启动模式,决定向量表的位置当CPU上电后,首先代码区(Flash)应该从地址为0x00000000开始,而数据区(SRAM)应该从0x20000000开始,Cortex-M3CPU总是通过代码区获得复位向量。STM32F10XXX微处理器中运用了特殊的机制使得STM32不仅可以通过Flash(主闪存和系统闪存)启动,..
分类:
其他好文 时间:
2016-06-10 15:05:11
阅读次数:
1163
字符串回顾 一个字符串由一个或多个字符组成,因此我们可以用字符数组来存放字符串,不过在数组的尾部要加上一个空字符'\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