当我在memorystream或filestream中使用大文件时,我看到一个“内存不足”的错误
我怎么解决这个问题?

例:

procedure button1.clıck(click);
var
  mem:TMemoryStream;
  str:string;
begin
  mem:=Tmemorystream.create;
  mem.loadfromfile('test.txt');----------> there test.txt size 1 gb..
  compressstream(mem);
end;

最佳答案

您的实现非常混乱。我不确切知道CompressStream的功能,但是如果您想将大文件作为流处理,则可以通过简单地使用TFileStream来节省内存,而不是尝试一次将全部内容读入TMemoryStream。

同样,使用完TMemoryStream之后,您再也不会释放它,这意味着您将泄漏大量内存。 (除非CompressStream负责此工作,但是从代码中还不清楚,以这种方式编写它确实不是一个好主意。)

10-05 22:42