写程序有好一段时间了,突然间想起有这样的一个问题:例如:
var
i : Integer;
p : pInteger;
begin
i := 10;
p := @i;
end;上面代码中p是指针10的内存首地址并是Integer类型的,这个好理解,但变量在内存中是怎么引用10的?i := 10是一个怎么样的机制?它不是用地址跟10关联那是用什么关联的呢?
var
i : Integer;
p : pInteger;
begin
i := 10;
p := @i;
end;上面代码中p是指针10的内存首地址并是Integer类型的,这个好理解,但变量在内存中是怎么引用10的?i := 10是一个怎么样的机制?它不是用地址跟10关联那是用什么关联的呢?
i := 10; mov [ebp-$04],$0000000a
p := @i; lea ebx,[ebp-$04]ebp-$04就是I,它实际上是栈
P实际上就是指向该栈的一个指针即ebx
用record,pack record去理解一下.