下面的程序都是x86程序。32位的程序

如下代码:

#include <iostream>
using namespace std;void test() {cout << "Hello World" << endl;
}int main(int argc, int *argv[]) {int *p = new int(10);int **pp = &p;cout << pp << endl;test();getchar();return 0;
}

先看下Debug版的反汇编:

上面是main函数的,看看test()函数

从中可以看到还是代码还是比较多的,主要是看release版本。Debug版本稍微过一下。

32位机器编译出来程序函数前都是

push ebp
mov ebp, esp

进入函数时要保存ebp的值。进入函数后存esp的值。方便进行堆栈内的寻址,函数返回要恢复ebp的值。

从上面可以看到调用函数一般就是使用call。

看下和二级指针相关的反汇编代码:

lea eax, [p]
mov dword ptr [pp], eax

LEA为数据传输指令,[p]为p地址内的值(因为是指针,这个值也是地址)给eax。

然后使用mov指令把eax里面放的这个地址,以地址的形式放到pp中。

下面是release版本的反汇编:

从这里可以看到test()函数被优化了,并且整个程序都变成十分简洁。Release版本还是比较6。

这里可以看到**pp被优化了,在反汇编中可以看到,他仅仅是操作了指针p。

这里空间没释放,在此补下代码:

#include <iostream>
using namespace std;void test() {cout << "Hello World" << endl;
}int main(int argc, int *argv[]) {int *p = new int(10);int **pp = &p;cout << pp << endl;test();getchar();delete p;return 0;
}

C++笔记-二级指针在反汇编中的形式相关推荐

  1. 【C 语言】二级指针内存模型 ( 指针数组 | 二维数组 | 自定义二级指针 | 将 一、二 模型数据拷贝到 三 模型中 并 排序 )

    文章目录 一.指针数组 和 二维数组 数据 拷贝到 自定义二级指针 中 1.函数形参 设计规则 2.三种内存模型 对应 函数形参 指针退化规则 二.完整代码示例 一.指针数组 和 二维数组 数据 拷贝 ...

  2. (C++)函数参数传递中的一级指针和二级指针

    主要内容: 1.一级指针和二级指针 2.函数指针传递的例子 3.什么时候需要传递二级指针? 4.二级指针在链表中的使用 1.一级指针和二级指针 一级指针:即我们一般说的指针,就是内存地址; 二级指针: ...

  3. 【C 语言】二级指针案例 ( 字符串切割 | 返回 自定义二级指针 作为结果 | 每个 一级指针 指向不同大小内存 | 精准分配每个 一级指针 指向的内存大小 )

    文章目录 一.二级指针案例 ( 返回自定义二级指针 | 精准控制内存大小 ) 二.完整代码示例 一.二级指针案例 ( 返回自定义二级指针 | 精准控制内存大小 ) 博客 [C 语言]二级指针案例 ( ...

  4. 关于C语言二级指针正确使用总结

    关于C语言二级指针正确使用总结 什么是二级指针 C语言中的二级指针其实就是指向指针的指针,指向指针的指针是一种多级间接寻址的形式,或者说是一个指针链.同理可以构建三级或者N级指针,但是一般情况下用不到 ...

  5. 2020-09-25C++学习笔记引用2:二级指针形参与指针形参的使用方法和区别重难点,主看综合代码(1、指针形参2、引用形参3、二级指针形参4、指针引用形参)

    2020-09-25C++学习笔记引用2:二级指针形参与指针引用搭配做形参的使用方法区别重难点,注意事项主看综合代码(1.指针形参2.引用形参3.二级指针形参4.指针引用形参) 1.指针引用 #inc ...

  6. 【二级指针--定义、初始化赋值、解引用;特殊指针--空指针、void类型的指针】(学习笔记12--指针下)

    目录 一.二级指针 指针的指针 二级指针的定义 二级指针的初始化与赋值 二级指针的解引用 二级指针与指针数组 main函数的参数 二.特殊指针 空指针 void类型的指针 新星计划第六篇博文,下面是上 ...

  7. 关于C语言中的数组指针、指针数组以及二级指针

    概念解释 数组指针:首先它是一个指针,它指向一个数组,即指向数组的指针:在32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,不知道.数组指针指向的是数组中的一个具体元素,而不是整个数组,所 ...

  8. 【C 语言】结构体 ( 结构体中嵌套二级指针 | 为 结构体内的二级指针成员 分配内存 | 释放 结构体内的二级指针成员 内存 )

    文章目录 一.结构体中嵌套二级指针 1.结构体中嵌套二级指针 类型声明 2.为 结构体内的二级指针成员 分配内存 3.释放 结构体内的二级指针成员 内存 二.完整代码示例 一.结构体中嵌套二级指针 1 ...

  9. 【C 语言】多级指针 ( 在函数中生成 二级指针 | 通过传入的 三级指针 进行间接赋值 )

    文章目录 前言 一.在函数中生成 二级指针 ( 通过传入的 三级指针 进行间接赋值 ) 二.完整代码示例 前言 如果要 通过 函数形参 间接赋值 修改 nnn 级指针, 需要向函数中传入 n+1n + ...

最新文章

  1. 【高端】几个关于SCSS中for循环的高级玩法
  2. 配置文件加载位置||外部配置加载顺序||自动配置原理
  3. 临汾移动搜索引擎推广_竞价信息流移动搜索推广分析!
  4. 不是你无法入门自然语言处理,而是你没找到正确的打开方式
  5. 月入过万的副业你要不要?不需要编程知识,不限男女,不限学历
  6. 作者:Gopakumar Gopalakrishnan,男,印度科技大学管理学博士,印孚瑟斯技术有限公司高级研究科学家。...
  7. jupyter notebook 使用pip安装库,解决报错:zsh:1: command not found: pip
  8. 杭电4561 连续最大积
  9. java容器分数0-9_2018.4.27 java容器
  10. Could not connect to Redis at 127.0.0.1:13141: Cannot assign requested address
  11. javaScript技巧表:单提交验证类[转载]
  12. 多数据源与动态数据源的权衡
  13. python爬虫获取html_python3爬虫获取html内容及各属性值的方法
  14. 计算机网络实验一VLAN间路由
  15. linux ctex缺少字体,Linux下xetex找不到字体
  16. 计算机管理格式化没有顺利完成,TF存储卡“格式化没有顺利完成”问题解决的方法...
  17. MySQL数据库体系结构
  18. 设计模式读书笔记-----抽象工厂模式
  19. 【数据挖掘】2022数据挖掘之数据的高级处理(消除缺失值、数据离散化、合并等)
  20. (附源码)ssm华辰酒店管理系统 毕业设计 021206

热门文章

  1. 20个linux命令行工具监视性能(上)
  2. CentOS 5安装GIT的基本命令
  3. 零基础零代码,也能一周学会动态报表?这个方法很多人都不知道
  4. 今天一看,自己发的文章原来这么多了。openeim
  5. 对于内向、不善于社交的人来说,如何建立人脉?
  6. 可是听了半天C++五子棋
  7. 无论如何都是为了测试傻瓜搜索引擎
  8. 水滴石穿C语言之正确使用const
  9. 微信“拍一拍”,竟然可以使用Python实现,你get到了吗?
  10. 作为一名程序员,我站在人生的十字路口