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

  • 相关阅读:
    hadoop系列二:HDFS文件系统的命令及JAVA客户端API
    hadoop系列一:hadoop集群安装
    解决tomcat下面部署多个项目log4j的日志输出会集中输出到一个项目中的问题
    HandlerMethodArgumentResolver数据绑定无效
    MyBatis 元素类型为 "configuration" 的内容必须匹配 ".....
    jquery.uploadify 异常 “__flash__removeCallback”未定义
    fusioncharts图例(legend)属性
    Flex Error #2156问题
    HTML注释引起的问题
    Asp.net Mvc4 使用Cas单点登录
  • 原文地址:https://www.cnblogs.com/ruili07/p/10832114.html
Copyright © 2011-2022 走看看