编译

作者: 滩主 | 来源:发表于2020-02-10 09:05 被阅读0次

符号决议

image.png
image.png
image.png

本质上整个符号表只是想表达两件事:
我能提供给其它文件使用的符号
我需要其它文件提供给我使用的符号

image.png
image.png
// add.c
int global_x = 256;
char global_c = 'a';

int add(int a,int b)
{
    return a+b;
}
// gcc -c add.c
// readelf -h add.o
// readelf -a add.o
//  readelf -S add.o
// readelf -r add.o
// readelf -x .text add.o
// dumpelf add.o

事关右值

#include <stdio.h>
#include <string>

int main()
{
  std::string str = "hello!";
  printf("%p %p\n",&str[0],&str);

  std::string&& r = std::move(str);
  printf("%p\n",&r[0]);

  // 短字符串直接存储在栈上,没有new
  std::string str2(std::move(str));
  str[0] = 'H';
  printf("%p %p\n",&str2[0],&str2);
  printf("%s\n",&str2[0]);

  std::string long_str = "sdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfweljlnjaljasdf";
  printf("%p %p\n",&long_str[0],&long_str);
  //std::string long_str2(std::move(long_str));
  std::string long_str2 = std::move(long_str);
  printf("%p %p\n",&long_str2[0],&long_str2);

  return 0;
}
#include <utility>
#include <string>
#include <iostream>
#include <vector>
#include <stdio.h>

int main()
{
    std::string str = "Helloaaaaaaaaaaaaaaaaaaaaaaaaa";
    printf("%p\n",&str[0]);
    std::vector<std::string> vec;

    vec.push_back(str);
    vec.push_back(std::move(str));
    printf("%p\n",&vec[1][0]);

    return 0;
}

https://segmentfault.com/a/1190000016433829
https://blog.csdn.net/daide2012/article/details/73065204

相关文章

  • dtb文件编译

    反编译 编译 批量反编译

  • 编译过程与静态库&动态库

    一、编译过程 1、预编译(Preprocessing) 预编译即预处理,编译器不能直接对预编译命令进行编译,必须在...

  • 宏、const、static、extern使用详解

    宏与const的区别 编译时刻:宏是预编译(编译之前处理),const是编译阶段。编译检查:宏不做检查,不会报编译...

  • iOS const 与宏

    编译时刻:宏是预编译(编译之前处理),const是编译阶段。 编译检查:宏不做检查,不会报编译错误,只是替换,co...

  • 2020-09-09 RK系统编译

    编译uboot: 编译kernel: 环境配置: 编译系统:

  • 程序编译过程

    本文编译的文件cpu架构为X86_64。 编译型语言编译过程主要有预编译、编译、汇编、链接。 预编译This st...

  • 自己动手编译OpenJDK

    Linux下 编译 Centos 下编译OpenJDK Mac下编译 MacOS 下编译OpenJDK Windo...

  • 宏 const static extern的区别与使用

    一. const 与 宏的区别 编译时刻: 宏是预编译(编译之前处理), const是编译阶段处理 编译检查: 宏...

  • 晚期(运行期)优化

    HotSpot的即时编译器 解释器与编译器 编译对象与触发条件 编译过程 编译优化技术 如果还对其他的经典编译优化...

  • 编译时和运行时、OC中对象的动态编译机制

    编译时和运行时、OC中对象的动态编译机制 编译时 编译时顾名思义就是正在编译的时候.那啥叫编译呢?就是编译器帮你把...

网友评论

      本文标题:编译

      本文链接:https://www.haomeiwen.com/subject/lnnoxhtx.html