C++笔记-二级指针在反汇编中的形式
下面的程序都是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++笔记-二级指针在反汇编中的形式相关推荐
- 【C 语言】二级指针内存模型 ( 指针数组 | 二维数组 | 自定义二级指针 | 将 一、二 模型数据拷贝到 三 模型中 并 排序 )
文章目录 一.指针数组 和 二维数组 数据 拷贝到 自定义二级指针 中 1.函数形参 设计规则 2.三种内存模型 对应 函数形参 指针退化规则 二.完整代码示例 一.指针数组 和 二维数组 数据 拷贝 ...
- (C++)函数参数传递中的一级指针和二级指针
主要内容: 1.一级指针和二级指针 2.函数指针传递的例子 3.什么时候需要传递二级指针? 4.二级指针在链表中的使用 1.一级指针和二级指针 一级指针:即我们一般说的指针,就是内存地址; 二级指针: ...
- 【C 语言】二级指针案例 ( 字符串切割 | 返回 自定义二级指针 作为结果 | 每个 一级指针 指向不同大小内存 | 精准分配每个 一级指针 指向的内存大小 )
文章目录 一.二级指针案例 ( 返回自定义二级指针 | 精准控制内存大小 ) 二.完整代码示例 一.二级指针案例 ( 返回自定义二级指针 | 精准控制内存大小 ) 博客 [C 语言]二级指针案例 ( ...
- 关于C语言二级指针正确使用总结
关于C语言二级指针正确使用总结 什么是二级指针 C语言中的二级指针其实就是指向指针的指针,指向指针的指针是一种多级间接寻址的形式,或者说是一个指针链.同理可以构建三级或者N级指针,但是一般情况下用不到 ...
- 2020-09-25C++学习笔记引用2:二级指针形参与指针形参的使用方法和区别重难点,主看综合代码(1、指针形参2、引用形参3、二级指针形参4、指针引用形参)
2020-09-25C++学习笔记引用2:二级指针形参与指针引用搭配做形参的使用方法区别重难点,注意事项主看综合代码(1.指针形参2.引用形参3.二级指针形参4.指针引用形参) 1.指针引用 #inc ...
- 【二级指针--定义、初始化赋值、解引用;特殊指针--空指针、void类型的指针】(学习笔记12--指针下)
目录 一.二级指针 指针的指针 二级指针的定义 二级指针的初始化与赋值 二级指针的解引用 二级指针与指针数组 main函数的参数 二.特殊指针 空指针 void类型的指针 新星计划第六篇博文,下面是上 ...
- 关于C语言中的数组指针、指针数组以及二级指针
概念解释 数组指针:首先它是一个指针,它指向一个数组,即指向数组的指针:在32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,不知道.数组指针指向的是数组中的一个具体元素,而不是整个数组,所 ...
- 【C 语言】结构体 ( 结构体中嵌套二级指针 | 为 结构体内的二级指针成员 分配内存 | 释放 结构体内的二级指针成员 内存 )
文章目录 一.结构体中嵌套二级指针 1.结构体中嵌套二级指针 类型声明 2.为 结构体内的二级指针成员 分配内存 3.释放 结构体内的二级指针成员 内存 二.完整代码示例 一.结构体中嵌套二级指针 1 ...
- 【C 语言】多级指针 ( 在函数中生成 二级指针 | 通过传入的 三级指针 进行间接赋值 )
文章目录 前言 一.在函数中生成 二级指针 ( 通过传入的 三级指针 进行间接赋值 ) 二.完整代码示例 前言 如果要 通过 函数形参 间接赋值 修改 nnn 级指针, 需要向函数中传入 n+1n + ...
最新文章
- 【高端】几个关于SCSS中for循环的高级玩法
- 配置文件加载位置||外部配置加载顺序||自动配置原理
- 临汾移动搜索引擎推广_竞价信息流移动搜索推广分析!
- 不是你无法入门自然语言处理,而是你没找到正确的打开方式
- 月入过万的副业你要不要?不需要编程知识,不限男女,不限学历
- 作者:Gopakumar Gopalakrishnan,男,印度科技大学管理学博士,印孚瑟斯技术有限公司高级研究科学家。...
- jupyter notebook 使用pip安装库,解决报错:zsh:1: command not found: pip
- 杭电4561 连续最大积
- java容器分数0-9_2018.4.27 java容器
- Could not connect to Redis at 127.0.0.1:13141: Cannot assign requested address
- javaScript技巧表:单提交验证类[转载]
- 多数据源与动态数据源的权衡
- python爬虫获取html_python3爬虫获取html内容及各属性值的方法
- 计算机网络实验一VLAN间路由
- linux ctex缺少字体,Linux下xetex找不到字体
- 计算机管理格式化没有顺利完成,TF存储卡“格式化没有顺利完成”问题解决的方法...
- MySQL数据库体系结构
- 设计模式读书笔记-----抽象工厂模式
- 【数据挖掘】2022数据挖掘之数据的高级处理(消除缺失值、数据离散化、合并等)
- (附源码)ssm华辰酒店管理系统 毕业设计 021206