首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将内存分配给指向记录的指针?德尔菲7

如何将内存分配给指向记录的指针?德尔菲7
EN

Stack Overflow用户
提问于 2019-06-11 16:42:52
回答 1查看 652关注 0票数 1

我有这样的类型:

代码语言:javascript
复制
type
  pTRegex_sec=^TRegex_sec;
  TRegex_sec = record
  secs: Array of pTRegex_sec;
  len: byte;
  hasSections: boolean;
  hasUnits: boolean;
  units: Array of TRegex_unit;
end;

type TRegex_assertions = record
  len: byte;
  secs: Array of TRegex_sec;
end;

我想为TRegex_sec类型分配内存:

代码语言:javascript
复制
var Assertions: TRegex_assertions;
begin
  setlength(Assertions.secs, 1);
  GetMem(Assertions.secs[0], SizeOf(TRegex_sec));
end;

我遇到的错误是“不兼容类型”:Assertions.secs[0]<-- here

另一次尝试,同样的错误:

代码语言:javascript
复制
New(Assertions.secs[0]);

怎样才能做好呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-11 17:08:16

TRegex_assertions.secs字段是动态记录数组,而不是指针数组。不需要使用GetMem()来分配数组,SetLength()已经为您处理了。

但是,TRegex_sec.secs字段是一个动态的指针数组。使用SetLength()根据需要分配该数组,然后使用New()分配单个TRegex_sec实例以填充以下内容:

代码语言:javascript
复制
var
  Assertions: TRegex_assertions;
begin
  SetLength(Assertions.secs, 1);
  SetLength(Assertions.secs[0].secs, 1);
  New(Assertions.secs[0].secs[0]);
  ... 
end;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56548289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档