这里的问题其实问的是对堆与栈的数据访问有什么不同。
观察如下代码:
#include<stdio.h> #include<iostream> using namespace std; int main(){ int a; int *pb=(int*)malloc(sizeof(int)); a=1234; *pb=123456; return 0; }
在观察汇编的情况:
明显观察到,对栈数据赋值,直接将数据放到目标地址。而堆中的数据,先把pb的值放到寄存器中,再把值放到寄存器所指向的地址。
总结:对与堆内存的访问比栈内存的访问多一个步骤。