【问题标题】:How to check the disposed record?如何查看处置记录?
【发布时间】:2019-08-28 01:47:07
【问题描述】:

我想通过指针变量知道已处置的记录。

例如,我有如下记录和全局变量(T,P)。

TTest = record
 iA: Integer;
 sA: string;
end;
pTest = ^TTest;

T: pTest;
P: Pointer;

然后调用下面的过程。

...

procedure TestCreate;  
begin
  New(T);
  T^.iA := 100;
  T^.sA := 'ABCD';

  // 1.
  P := T;

  // 2.
  Dispose(T);

  // 3.
  WriteLn( IntToStr(pTest(P)^.iA) );
  // -> Show the 100
end;

有没有办法通过指针'P'知道记录'T'是否已被释放?

【问题讨论】:

标签: delphi pointers memory


【解决方案1】:

仅凭指针无法判断指向的值是否仍然有效。如果没有一些额外的代码来以某种方式跟踪它是不可能的。

作为旁注,我希望您知道您可以在不涉及指针的情况下处理记录?例如:

type
  TTest = record
   iA: Integer;
   sA: string;
  end;
var
  T: TTest;
begin   
  T.iA := 100;
  T.sA := 'ABCD';

【讨论】:

  • 哦!我知道。我没有上传整体来源。我需要使用指针值,因为不同的对象不止一个引用指针。谢谢!
猜你喜欢
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-13
  • 1970-01-01
  • 2022-10-19
  • 1970-01-01
相关资源
最近更新 更多