我如何初始化此代码?
type
PPNode = ^PNode;
PNode = ^Node;
CNode = array of PPNode;
Node = record
key: Integer;
next: PNode;
prev: PNode;
end;
我用这种方式:
function TForm1.chained_hash_init(n: Integer): CNode;
var
A: Cnode;
begin
...
SetLength(A, N);
Result := A;
...
end;
但我的内存错误对于此访问:
procedure TForm1.btn1Click(Sender: TObject);
var
pcnArr: CNode;
begin
SetLength(pcnArr, 19);
pcnArr := chained_hash_init(19);
ShowMessage( IntToStr(pcnArr[i]^^.key)) ); // I have Problem Here :(
end;
我如何初始Cnode?
答案 0 :(得分:3)
您没有在ShowMesage之前初始化pcnArr[i]
。因此,您会收到“访问冲突”错误。
所以你应该初始化pcnArr
,例如:
function TForm1.chained_hash_init(n: Integer): CNode;
var
A: Cnode;
i:integer;
P:PNode;
begin
...
SetLength(A, N);
for i:=0 to N-1 do
begin
new(A[i]);
new(A[i]^);
with A[i]^^ do
begin
key:=0;
next:=nil;
prev:=nil;
end;
end;
Result := A;
...
end;