동적배열을 리턴값으로 넘길 생각을 해보았습니다.
var
test : array of Char;
i : integer;
p : pointer;
begin
setlength(test, 4)
for i:=0 to 3 do
test[i] := 'a';
p := @test;
Result := p;
end;
pointer를 return하고서 다시 동적배열을 만들어 리턴받은 주소값을 할당하거나아예 포인터로 값을 받으려던 참이었죠. 그런데 디버깅하면서 값을 보니까 끝에
'end;' 하면서 test 에 들어갔던 'aaaa' 가 사삭~ 없어지데요? 동시에 포인터값
p 도 free 되더군요. 원래 그런가보죠? 안사라지게 할 방법은 없을까요?
동적배열을 리턴값으로 할 수는 없을까요? 가능하다면 그렇게 했을 경우에 동적
배열을 리턴받는 부분은 어떻게 만들 수 있을까요?
아래 형태의 함수를 말씀하신 건가요?
동적배열이라는 말이 말이 동적배열이지 결국 할당된 메모리 영역의
시작주소겠지요.
결국 주소를 리턴받으려는 것이 아닌지요?
function NewMem : Pointer;
var
P : Pointer;
begin
GetMem(P, 10);
StrCopy(P, 'aaaaaaaaaa');
Result := P;
end;
그럼..
Lyle 께서 말씀하시기를...
> 동적배열을 리턴값으로 넘길 생각을 해보았습니다.
>
> var
> test : array of Char;
> i : integer;
> p : pointer;
> begin
> setlength(test, 4)
> for i:=0 to 3 do
> test[i] := 'a';
> p := @test;
> Result := p;
> end;
>
> pointer를 return하고서 다시 동적배열을 만들어 리턴받은 주소값을 할당하거나아예 포인터로 값을 받으려던 참이었죠. 그런데 디버깅하면서 값을 보니까 끝에
> 'end;' 하면서 test 에 들어갔던 'aaaa' 가 사삭~ 없어지데요? 동시에 포인터값
> p 도 free 되더군요. 원래 그런가보죠? 안사라지게 할 방법은 없을까요?
> 동적배열을 리턴값으로 할 수는 없을까요? 가능하다면 그렇게 했을 경우에 동적
> 배열을 리턴받는 부분은 어떻게 만들 수 있을까요?
>
>