我在一个程序中用NEW(),DISPOSE()来动态的读取数据和释放内存,但是有时程序会自动关闭,并报“程序发生非法错误,并强制关闭”的错误。有人说是内存读取错误的原因,静态的创建一个内存池并从里面读取数据可以解决问题,但没有告诉我如何静态的创建一个内存池。特此请教各位高手如何创建一个内存池并从中读取数据和如何释放?谢谢!!!
解决方案 »
- 关于escape和unescape的两种格式,%xx 和%uxxxx
- SetEntriesInAcl 函数疑问
- 在线求解,如何提取文本中的数据,得手马上给分!
- 请问*.tex是用什么软件打开的?
- Delphi是不是可以直接应用c++的头文件的?
- 关于操作word的巨难问题,高手高高手请进,俺再送50分
- 请问验证用户身分的对话框应该在何时创建?,怎么创建?
- 网络数据库连接问题!!!急 急 急
- 如何把从COM组件返回的记录集在客户端绑定到DataSet上
- DELPHI XE7上弄安卓,运行的时候,出现一个错误
- 请问TDHTMLEdit如何以只读方式打开htm文件
- 怎样读去*.udl中的数据库连接字符串啊
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;
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;