obj = record
id : integer;
pid : integer;
end;
pobj = ^obj; Data : Pointer; //一个全局变量
procedure btn1(sender : TObject) ;
var
obj1 : pobj ;
begin
if Assigned(Data) then
begin
FreeMem(Data); //出错。。要不要这一句,如果不要会不会发生内存泄露
end;
GetMem(obj1);
obj1.id := 1;
obj1.pid := 2;
Data := obj1;
endbtn1这个过程我要调用多次,给Data赋值时,先前的占用的内存应该怎样释放?我这样写为什么会出错?
id : integer;
pid : integer;
end;
pobj = ^obj; Data : Pointer; //一个全局变量
procedure btn1(sender : TObject) ;
var
obj1 : pobj ;
begin
if Assigned(Data) then
begin
FreeMem(Data); //出错。。要不要这一句,如果不要会不会发生内存泄露
end;
GetMem(obj1);
obj1.id := 1;
obj1.pid := 2;
Data := obj1;
endbtn1这个过程我要调用多次,给Data赋值时,先前的占用的内存应该怎样释放?我这样写为什么会出错?
解决方案 »
- length 与 "missing operator or semicolon"错误提示
- 请问怎么样才能用dede把用delphi编的软件反编译成pascal的语句???????
- 谁认得5个以上,算他牛
- 如何用SQL语句更改表名,怎么用EXEC SP-rename table1,table2,object不行,在线等 (jasonlxc )
- 请问在win98里面怎么像在win2000里面一样启动ftp服务那??我想用NMFTP控件在两台win98机器上面传送文件。来者有分!!!!!!
- [公告]提问注意事项
- 这可是经典的绝品资源的哟,想下载的可要快点哟
- 请问怎样在table中过滤字段值?
- 关于数据库复制
- union這個坏東東
- 几个控件.如何共用一个弹出菜单!!
- 关于Delphi7升级到Indy10后与Web Service不兼容的问题
type Str18 = string[18];
var
P: ^Str18;
begin
New(P);
P^ := 'Now you see it...';
Dispose(P); { Now you don't... }
end;
用GetMem得到的,释放用FreeMem。
var F: file;
Size: Integer;
Buffer: PChar;
begin
AssignFile(F, 'test.txt');
Reset(F, 1);
try
Size := FileSize(F);
GetMem(Buffer, Size);
try
BlockRead(F, Buffer^, Size);
ProcessFile(Buffer, Size);
finally
FreeMem(Buffer);
end;
finally
CloseFile(F);
end;end;
PCHar/Array才使用GetMem和FreeMem的不要用错http://lysoft.7u7.net
PCHar/Array才使用GetMem和FreeMem的
将 FreeMem(Data); 改为 Dispose(Data);
>>PCHar/Array才使用GetMem和FreeMem的没有这种要求,区别只是在于GetMem可以用于分配N个单元的连续内存。