I illiperson Unregistered / Unconfirmed GUEST, unregistred user! 2007-03-30 #1 var<br>str:string;<br>strpstr;<br>begin<br> strp:=@str;<br>end;<br>在这里strp取到的是堆栈的地址,在堆栈中存放着str的直接地址。如何能取到字符串str在内存中的直接地址啊?
var<br>str:string;<br>strpstr;<br>begin<br> strp:=@str;<br>end;<br>在这里strp取到的是堆栈的地址,在堆栈中存放着str的直接地址。如何能取到字符串str在内存中的直接地址啊?
新 新世纪 Unregistered / Unconfirmed GUEST, unregistred user! 2007-03-30 #2 一般编译器中, 全局变量使用的是内存地址, 而过程函数中的变量使用的堆栈中的内存;<br>调用过程函数结束后, 堆栈(也是内存)中的内容不能使用了;<br>但程序结束之前, 全局变量(内存)的数据是一直可以使用的;
一般编译器中, 全局变量使用的是内存地址, 而过程函数中的变量使用的堆栈中的内存;<br>调用过程函数结束后, 堆栈(也是内存)中的内容不能使用了;<br>但程序结束之前, 全局变量(内存)的数据是一直可以使用的;
Y ysp娃娃 Unregistered / Unconfirmed GUEST, unregistred user! 2007-03-30 #3 strp:=Integer(str) <br>或者strp:= Pointer(Pointer(longint(@Str))^)
Y ysp娃娃 Unregistered / Unconfirmed GUEST, unregistred user! 2007-03-30 #4 procedure TForm1.Button1Click(Sender: TObject);<br>var<br> str: string;<br> Str1char;<br>begin<br> str:= '123';<br> str1:=Pchar(str);<br> Memo1.Lines.Add('Str栈地址:'+Inttostr(Longint(@Str)));<br> Memo1.Lines.Add('123的堆地址:'+inttostr(Longint(Str)));<br> Memo1.Lines.Add('123的堆地址:'+inttostr(Longint(Pointer(Longint(@Str))^)));<br>end;
procedure TForm1.Button1Click(Sender: TObject);<br>var<br> str: string;<br> Str1char;<br>begin<br> str:= '123';<br> str1:=Pchar(str);<br> Memo1.Lines.Add('Str栈地址:'+Inttostr(Longint(@Str)));<br> Memo1.Lines.Add('123的堆地址:'+inttostr(Longint(Str)));<br> Memo1.Lines.Add('123的堆地址:'+inttostr(Longint(Pointer(Longint(@Str))^)));<br>end;
L lisongmagic Unregistered / Unconfirmed GUEST, unregistred user! 2007-03-30 #6 procedure TForm1.Button1Click(Sender: TObject);<br>var<br> str,str2:string;<br>begin<br> str:= 'abc';<br> str2:= 'bcd';<br> Edit1.Text:= IntToHex(integer(@str),8);//局部栈地址<br> Edit2.Text:= IntToHex(integer(str),8);//全局堆地址(直接地址)<br> Edit3.Text:= IntToHex(integer(@str2),8);<br> Edit4.Text:= IntToHex(integer(str2),8);<br>end;
procedure TForm1.Button1Click(Sender: TObject);<br>var<br> str,str2:string;<br>begin<br> str:= 'abc';<br> str2:= 'bcd';<br> Edit1.Text:= IntToHex(integer(@str),8);//局部栈地址<br> Edit2.Text:= IntToHex(integer(str),8);//全局堆地址(直接地址)<br> Edit3.Text:= IntToHex(integer(@str2),8);<br> Edit4.Text:= IntToHex(integer(str2),8);<br>end;