function TFormMain.GetMyTBytes(const AFileName: string): TBytes;
begin
with TFileStream.Create(AFileName, fmOpenRead or fmShareDenyNone) do
try
SetLength(Result, Size);
ReadBuffer(PByte(Result)^, Size);
finally
Free;
end;
end;
// ...
var
TBA, TBB: TBytes;
// ...
TBA := GetMyTBytes('C:\mydoc.docx');
TBB := Copy(TBA);
在这种情况下是否可以排除TBB
在此操作结束时与TBA
共享任何内存?
答案 0 :(得分:4)
Copy()
在内存中创建数组数据的副本。一旦复制完成,TBA
和TBB
之间就没有任何共享。
此外,您的GetMyTBytes()
是多余的,System.IOUtils
单位可以使用TFile.ReadAllBytes()
方法。