Delphi中这段获取计算机名的代码有些不明白的

procedureTForm1.Button1Click(Sender:TObject);varcnamebuffer:pchar;loaded:boolean;clen... procedure TForm1.Button1Click(Sender: TObject);
var
cnamebuffer:pchar;
loaded:boolean;
clen:^dword;
computername:string;
begin
getmem(cnamebuffer,255);

new(clen);

clen^:=255;

loaded:=getcomputername(cnamebuffer,clen^);

if loaded then

computername:=strpas(cnamebuffer)

else

computername:='unkown';

showmessage('计算机名为:'+computername);

edit1.Text :=computername;

freemem(cnamebuffer,255);

dispose(clen);
end;

end.

这段代码中的
getmem(cnamebuffer,255);
new(clen);
clen^:=255;

freemem(cnamebuffer,255);
dispose(clen);
各是什么意思啊,我是个初学者,请各位高手能够耐心详细的为我解答下,并且最好再给个例子
展开
 我来答
rcyboom
2010-05-05 · TA获得超过494个赞
知道小有建树答主
回答量:403
采纳率:25%
帮助的人:267万
展开全部
getmem(cnamebuffer,255);
意思是getmemory,请求系统分配一个大小为255的内存空间给cnamebuffer

new(clen);
为clen申请内存空间并初始化为0,先前的定义中 clen:^dword 把它定义为一个指向dword数据的指针类型,但是它并没有被初始化,这里就是初始化指针的意思

clen^:=255;
这里就是给clen指向的实际数据赋值为255,这个实际数据就是通过new获得的,只不过new完后它是0现在重新给个255的值

freemem(cnamebuffer,255);
freememory 释放cnamebuffer先前申请的空间

dispose(clen);
释放clen说指向的空间

这个程序绕来绕去的,涉及了delphi的指针定义和用法,以及delphi中申请内存的两种方式,每种方式又有对应的释放内存的方法
new->dispose getmem->freemem

分析程序可以知道,clen^完全没必要,直接用255代替即可
moonglade9
2010-05-05 · TA获得超过309个赞
知道答主
回答量:340
采纳率:0%
帮助的人:194万
展开全部
例子去百度或者google“藏锋者网络安全”就可以找到了。
里面有一个“编程”栏目,就有这个内容。用站内搜索查一下吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式