请问如何创建一个内存池并读取里面的数据?

Ask100 2004-10-19 07:05:47
我在一个程序中用NEW(),DISPOSE()来动态的读取数据和释放内存,但是有时程序会自动关闭,并报“程序发生非法错误,并强制关闭”的错误。有人说是内存读取错误的原因,静态的创建一个内存池并从里面读取数据可以解决问题,但没有告诉我如何静态的创建一个内存池。特此请教各位高手如何创建一个内存池并从中读取数据和如何释放?谢谢!!!
...全文
98 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
beyondtkl 2004-10-20
  • 打赏
  • 举报
回复
都一样用 不过你要同样安全的使用就是 这里的安全包括访问安全,以及数据正确等
梅青松 2004-10-20
  • 打赏
  • 举报
回复
type
MyRecord = record
name: array [0..5] of Char;
age: Integer;
end;

var
ms: TMemoryStream;
buf: array [0..25] of MyRecord;
ReadBuf: MyRecord;
i: Integer;
name: String;
begin
FillChar(ReadBuf, SizeOf(MyRecord), 0);
FillChar(buf, SizeOf(buf), 0);
for i := 0 to 25 do
begin
name := 'name' + IntToStr(i);
StrMove(@buf[i].name[0], PChar(name), Length(name));
buf[i].age := 5 + i;
end;
ms := TMemoryStream.Create;
try
ms.SetSize(SizeOf(buf));
ms.Write(buf, SizeOf(buf));
ms.Position := SizeOf(MyRecord) * 5;
ms.Read(ReadBuf, SizeOf(MyRecord));
ShowMessage(ReadBuf.name);
except
ms.Free;
end;
end;
Ask100 2004-10-20
  • 打赏
  • 举报
回复
我的BUF的位置是一个自己定义的结构,该如何实现
梅青松 2004-10-20
  • 打赏
  • 举报
回复
var
ms: TMemoryStream;
buf: array [0..255] of Char;
begin
buf := '1234567880984544444';
ms := TMemoryStream.Create;
try
ms.SetSize(1024);
ms.Write(buf, SizeOf(buf));
ms.Position := 5;
ms.Read(buf, 13);
ShowMessage(buf);
except
ms.Free;
end;
end;
软件钢琴师 2004-10-20
  • 打赏
  • 举报
回复
邦你顶一下,不好意思,上面试我回答的另一个问题
软件钢琴师 2004-10-20
  • 打赏
  • 举报
回复
mouseup,keyup,exit
Ask100 2004-10-20
  • 打赏
  • 举报
回复
请高手们看一看,谢谢

5,387

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧