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

  • 相关阅读:
    C++ Operate FTP
    md /mdd /ml /mt/mtd
    从MySpace基于.NET平台的六次重构经历,来感受分布式系统。
    分布式缓存BeIT Memcached简介
    Asp.Net应用程序中为什么要MachineKey?如何生成MachineKey?
    马云飞机上写长贴:再一次和新同事们谈谈看法
    memcached完全剖析
    ESET ESS/EAV 5 正式版 中英文32/64位 (注册版) 下载
    Windows下的.NET+ Memcached安装
    在 ASP.NET 環境下使用 Memcached 快速上手指南
  • 原文地址:https://www.cnblogs.com/ruili07/p/10832114.html
Copyright © 2011-2022 走看看