小编Ant*_*ans的帖子

处理指向复杂记录的指针

我有一些指向一些复杂记录的指针.有时当我尝试处理它们时,我得到无效的指针操作错误.我不确定我是否正确地创建和处理它们.记录看起来像这样:

type
  PFILEDATA = ^TFILEDATA;
  TFILEDATA = record
    Description80: TFileType80;  // that's array[0..80] of WideChar
    pFullPath: PVeryLongPath;    // this is pointer to array of WideChar
    pNext: PFILEDATA;            // this is pointer to the next TFILEDATA record
  end;
Run Code Online (Sandbox Code Playgroud)

据我所知,当我想要一个指向这样的记录的指针时,我需要初始化指针和动态数组,如下所示:

function GimmeNewData(): PFILEDATA;
begin
  New(Result);
  New(Result^.pFullPath);
end;
Run Code Online (Sandbox Code Playgroud)

现在处理这些记录的系列我写道:

procedure DisposeData(var pData: PFILEDATA);
var pNextData: PFILEDATA;
begin
  while pData^.pNext <> nil do begin
    pNextData := pData^.pNext;          // Save pointer to the next record
    Finalize(pData^.pFullPath);         // Free dynamic array
    Dispose(pData);                     // Free the record …
Run Code Online (Sandbox Code Playgroud)

delphi pointers dispose

4
推荐指数
2
解决办法
3398
查看次数

标签 统计

delphi ×1

dispose ×1

pointers ×1