PMyrcd = ^TMyrcd;
TMyrcd = record
n: integer;
s: String;var
prcd: PMyrcd;
procedure TTT;
GetMem(prcd, sizeof(prcd));
prcd.s; // 此句报错顺便问一下如果record里面有Tlist类型用new能分配么
TMyrcd = record
n: integer;
s: String;var
prcd: PMyrcd;
procedure TTT;
GetMem(prcd, sizeof(prcd));
prcd.s; // 此句报错顺便问一下如果record里面有Tlist类型用new能分配么
上面的代码修改如下试试:
PMyrcd = ^TMyrcd;
TMyrcd = record
n: integer;
s: String;var
prcd: PMyrcd;
procedure TTT;
New(prcd);
prcd.s; // 此句报错
分配连续空间,用于字符串和缓冲区的,不是分配对象用的
回答的好
还有,由GetMem分配的内存是未初始化的。要用Initialize或FillChar来设置该内存为0;