高手之路-- 明白计算机底层! 为了更好地精通C++ ,否则你指针永远也用不好!!必须知道的概念!
首先看一下这堆代码, 我先证明 release 跟Debug 编译出来的 反汇编是一样的, 否则那无法进一步 推测了! 以上呢 通过 2种编译 ,结果 居然 release 更慢, 这说明 这代码已经无法 优化了. 以下,让你学习如何看懂 内存, 跟 EBP ,指针对应的 写入堆栈 跟 写入 内存是一样的概念, 只是 相对于 EBP 栈底 地址而言。 你看以下 是 第二次运行的内存 , 你会发现 不可读, 为啥不可读呢,就是因为程序每次运行 基地址都是动态分配的。 那么 以为着, EBP 地址 也是 根据 基址 + 偏移 得到的。 进程需要 通过调用 winAPI的方式 来 实现 向 操作系统申请 更多 内存地址 空间。 你才能 写入更多的内存地址。 这次运行 EBP 地址 变成了 4EEF40 ,然后我们定位到 4EEF40 地址 就能看到 CPU是怎么直接写入 内存地址的. 直接输入 0x 004EEF40 就能定位了, 然后滚轮,往上滚一点点, 你就能看到 ,各种 变量,都会在堆栈底部 网上的位置 存放的。 滚上去,一看 发现很多 0x000000 的 就是 初始化 堆栈的痕迹 ! 瞬间就明白这就是 堆栈的内部! 然后 这里 inc dword ptr [ebp-60h] 就是 ebp-60h 这个地址 ,的数据 自增 1 那么ebp对应的地址是什么呢? 然后 按调试,