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(...)

  • 相关阅读:
    hiho #1502:最大子矩阵(元素和不超过k)
    IPC 进程间通信方式——消息队列
    IPC 进程间通信方式——共享内存
    IPC 进程间通信方式——管道
    hiho #1032: 最长回文子串
    TCP超时与重传机制与拥塞避免
    C++关于构造函数 和 析构函数 能否抛出异常的讨论
    基于TCP的客户端、服务器端socket编程
    hiho #1043 : 完全背包
    hiho #1485 : hiho字符串(滑动窗口)
  • 原文地址:https://www.cnblogs.com/ruili07/p/10832114.html
Copyright © 2011-2022 走看看