2018.8.8笔记

void print(int a[2], int n){//OK,数组退化为指针

}

void print(int a[0], int n){//错

}

数据类型的本质:固定内存大小块的别名

const vector<int>::iterator iter
*iter = 10;
vector<int>::const_iterator iter
iter++

1,const static float cfx = 30
2,void func() const{}
3,函数重载
void func() const{}
void func(){}
void func(int x){}
void func(const int x){}//这个不是重载,编译报错,函数已存在

2018.8.8
程序生成过程:
预编译-处理#相关的,包括#include
编译-将源文件编译成汇编代码
汇编-将汇编代码一一对应的翻译成机器码,生成obj文件
每个生成的obj文件都包含了: 代码段,数据段等,见如下obj文件格式
链接-将obj拼接起来,去掉多余信息,生成可行文件
由于每个obj中都有代码段,数据段等,因此链接过程中要进行合并

obj与exe格式几乎相同,有一些链接信息:如动态链接库信息等

obj文件格式:
文件头
.data 数据段 可读可写
.text 代码段 只读
.rodata 只读数据段 const 等
.bss 未初始化的全局变量记录段(并不占物理内存,占虚拟空间)
.debug 调试信息
.dynamic 动态链接库信息
.symtab 符号表,就是程序中用到的变量的名字,局部的及全局的,编译器生成的,如段名等
链接报错时,错误信息大概就是这个符号表的东西吧
.其它

为什么要将代码段与数据段独立开?
1,代码是只读的,数据是可写的,必须分开
2,多个实例使用的代码,不同的数据
3,局部访问性原理,可提高缓存命中率

动态链接与静态链接
静态链接:此时静态库就像一个obj文件一样被缝合进了EXE
试想若每个程序都把系统的库静态链接入自己中,N个程序将复制N份系统库,运行时将重复大量的内存
而动态链接库则是共享库只加载一份到内存中,各程序共同使用它。
因为每个进程都有自己的虚拟空间,这个空间就是CPU的寻址范围,32位CPU,寻址能力是4GB,
就是说32位CPU上,每个进程的虚拟内存都是4GB
那么,由于动态链接库不是缝合到EXE中的,因此也不能映射到EXE的进程中,
故,动态链接库加载到内存中时也是有独立的虚拟空间的,
这就引出了一个著名问题:跨链接库 NEW/DELETE的问题,
在一个DLL中用NEW申请内存,在另一个DLL或EXE中 DELETE释放内存可能会出现问题,

计算机存储分类:
1,寄存器: CPU内的器件,速度最快的存储器
2,RAM: random access memory,由触发器矩阵组成,每8个为一组,构成一个字节
触发器由电容构成,上电表示1,无电表示0,因此RAM即内存断电数据丢失
2.1 dram : 动态RAM,就是常说的内存,因为需要定时刷新(上电),故称为动态内存
2.2 sram : 静态RAM, 就是常说的cache,因为它不需要刷新(上电),因此速度比内存更快
3,ROM: 只读存储器
4,磁盘,也称硬盘,它真是与磁有关:在金属表层涂上磁层来存储信息
磁道非常细小,肉眼不可见,一个盘片有上万个磁道。
多个盘片组成一个圆柱结构,构成磁盘
磁盘是靠转动配合磁头移动来定位并读写数据的,显然这种机械运动比内存的电信号速度差太多了

posted on 2018-08-08 18:25 时空观察者9号 阅读(...) 评论(...) 编辑 收藏

2018.8.8笔记相关推荐

  1. 2018.8.14笔记

    2018.8.14笔记 setsiblingindex(idx)设置兄弟结点先后顺序时,若idx处已有结点X,则结点X及其后的所有节点后移 gc alloc,就是申请堆内存,堆内存申请无处不在,不可能 ...

  2. 国际人工智能算法与应用研讨会(WASA 2018)参会笔记

    从博士师兄那里知道就在天津高新区有这个会议,就跟着师兄报名了,下面是参会第一天的感想. 背景 WASA是人工智能领域的国际性大型会议,也是中国计算机学会(CCF)推荐的会议.旨在为人工智能研究者.开发 ...

  3. 2018年-读书笔记

    读书笔记 <小窗幽记> 原文:天薄我福,吾厚吾德以迎之;天劳我形,吾逸吾心以补之;天厄我遇,吾亨吾道以通之.     译文:命运安排给我的福分淡薄,我会努力提高我的品德修养来面对它.命运使 ...

  4. 2018心得随想笔记

    忙过下午,打了把游戏,坐这儿一想微博开通到现在已经4/5个年头了竟然一篇博客都没写过,顿时有些黯然伤神.从2013年开始做Android开发以来,历经了4/5年的时间也算是在互联网的行业里摸爬滚打了这 ...

  5. Netflix 增长的逻辑——第二曲线(混沌2018年度大课笔记1)

    什么是增长的逻辑? 增长的逻辑:用不变的第一性原理,在第一曲线中找到破局点/失速点,跨越非连续性,将单一要素最大化,扩大到第二曲线中的全部,实现增长 记住加黑的关键词,及其所处的位置,后面一一介绍其含 ...

  6. 程序员练级攻略(2018)-陈皓-笔记整理

    程序员练级攻略(2018)     开篇词     入门篇         零基础启蒙         正式入门     修养篇         程序员修养     专业基础篇         编程语 ...

  7. A Common Framework for Interactive Texture Transfer(CVPR 2018)学习笔记

    (转自AI 科技)本文是北京大学门怡芳基于其 CVPR spotlight 论文为 AI 科技评论提供的独家稿件. 原文链接:https://www.sohu.com/a/260324342_6518 ...

  8. 2018年 五月笔记

    1. 对于如tableviewcontroller的视图控制器 如果单纯把其中的view 加入 其他的视图的话并不会起作用 会一片空白 需要在主视图控制器中 addchildvc添加视图控制器为子视图 ...

  9. 【论文笔记09】Differentially Private Hypothesis Transfer Learning 差分隐私迁移学习模型, ECMLPKDD 2018

    目录导引 系列传送 Differentially Private Hypothesis Transfer Learning 1 Abstract 2 Bg & Rw 3 Setting &am ...

最新文章

  1. NoSQL架构实践(二)——以NoSQL为主
  2. JDBC连接mysql--学习目录
  3. 关于java.math.BigDecimal的操作(亲测)
  4. 27-----BBS论坛
  5. linux执行cd会使用系统调用,深入理解Linux系统调用
  6. UVA - 10061 How many zero#39;s and how many digits ?
  7. fir fpga 不同截止频率_学习FPGA将来的出路在哪里?
  8. mate7安装android o,华为Mate7升级安卓6.0详细教程
  9. Android Studio 2.2 HTTP proxy setting 提示异常
  10. react android 串口,Maix Bit(K210) 与上位机串口通信
  11. 关于/etc/init.d/nfs脚本解读中的疑问解答
  12. 三菱fx2n-2ad编程实例_三菱PLC编程实例,PLC控制自动成型机
  13. Unity 模块化编程
  14. Java如何实现代理服务器?
  15. Linux 阻塞和非阻塞I/O
  16. 央行数字货币DCEP首个应用场景落地,新的支付风口领域已现!
  17. 将pyecharts生成的html转为图片的一些问题
  18. Arduino Uno 与 触摸模块 ttp223 实验详录
  19. #4.2混沌数学与混沌理论
  20. 华为交换机:利用Excel转换MAC地址公式

热门文章

  1. 笔记-项目采购管理-复习要点
  2. JS中生成8位的随机数字
  3. SpringBoot整合MQTT服务器实现消息的发送与订阅(推送消息与接收推送)
  4. AndroidStudio报错:Could not download gradle.jar:No cacahed version available for offline mode
  5. 类DefaultWsdl 11定义中英文对比API文档
  6. Jquery中怎样判断是否有网络
  7. 微信小程序从入门到飞起(各个组件)
  8. 6、Dcoker 容器数据卷用DockerFile添加
  9. PPT 下载 | 龙创悦动游臣隽:数据在游戏行业的落地应用实践
  10. 数据处理中的准确性问题