zoukankan      html  css  js  c++  java
  • C++学习笔记4

    编译器 链接器 加载器

    1. 编译器/汇编器 按条件编译,将汇编转为机器语 .o文件 gcc -o

    可重定位文件: 静态加载
    共享文件: 可静态加载与动态加载
    可执行文件: 直接载入内存

    静态库: 打包目标文件的集合
    动态库: 动态,共享加载

    2. 链接器 使编译 使用分离。
    静态库搜索路径(由静态链接器负责)

    gcc先从-L寻找;
    再找环境变量LIBRARY_PATH指定的搜索路径;
    再找内定目录 /lib /usr/lib /usr/local/lib 这是当初compile gcc时写在程序内的。

    动态库搜索路径(由动态链接器负责)

    编译目标代码时指定的动态库搜索路径-L;
    环境变量LD_LIBRARY_PATH指定的动态库搜索路径;
    配置文件/etc/ld.so.conf中指定的动态库搜索路径;
    默认的动态库搜索路径/lib /usr/lib/ /usr/local/lib


    3. 加载 静态加载, 链接器将函数代码从静态库拷贝到可执行程序,进程的虚拟地址空间。

    动态加载,动态库只提供符号表等少量信息,在程序执行时进行重定位。

    加载过程: 会根据头部表将目标文件拷贝进内存,加载器跳到程序入口, 开始执行程序,执行代码。


    动态分配的内存在函数退出或者超出作用域后不会自动注销,只要你有这块内存的地址,随时可以访问,也不会被分配给别的函数(数据)。那么就存在一个问题,当你频繁的动态分配内存而不释放,你的内存就会被消耗完

    如果是二维数组, 先将里面的释放了, 再释放外面总的。

    fwrite fread 是堆叠式的格式,采用固定长度分隔。

    C++记录8

    创建链接性为外部的静态变量,在代码外:
    int global = 0

    创建链接性为外部的静态变量,在代码外:
    static int one = 0

    创建无间接性的, 在代码中: static

    链接规范extern 'c' extern 'c++'

    new 的内存 用delete删除

    类构造:
    Test(...) 不需要返回值
    或者使用指针 Test *t = new Test(...)

  • 相关阅读:
    将您的基于 Accelerator 的 SAP Commerce Cloud Storefront 迁移到 Spartacus Storefront
    SAP S/4HANA: 一条代码线,许多种选择
    windows系统中远程登录ubuntu18服务器的桌面
    C语言格式控制符/占位符
    C语言变量声明和定义
    C语言数据类型 / 变量类型
    C语言 Hello World
    C语言代码注释
    变量命名 – 匈利亚命名法则
    设置 Visual Studio 字体/背景/行号
  • 原文地址:https://www.cnblogs.com/ruili07/p/10832114.html
Copyright © 2011-2022 走看看