zoukankan      html  css  js  c++  java
  • 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,磁盘,也称硬盘,它真是与磁有关:在金属表层涂上磁层来存储信息
    磁道非常细小,肉眼不可见,一个盘片有上万个磁道。
    多个盘片组成一个圆柱结构,构成磁盘
    磁盘是靠转动配合磁头移动来定位并读写数据的,显然这种机械运动比内存的电信号速度差太多了

  • 相关阅读:
    java.sql.SQLSyntaxErrorException: ORA-01722: 无效数字
    Lambda表达式详解
    MAC JDK 卸载方法(彻底卸载)
    JAVA final关键字
    JAVA访问权限
    JAVA重写
    JAVA继承
    单例设计模式---懒汉式和饿汉式
    JAVA构造块和静态代码块
    Java static关键字
  • 原文地址:https://www.cnblogs.com/timeObjserver/p/9444526.html
Copyright © 2011-2022 走看看