[fpc-devel] open array and address of "@" / crash, why?
Martin Frb
lazarus at mfriebe.de
Sun Mar 30 15:24:46 CEST 2014
The below program compiles fine (and generates no warning (fpc 2.6.2 /
win 32)
"c" is an open array. But there is no warning when assigning the
[address of c] to a [pointer to dyn array].
Assuming that type safety checks are performed, I would expect a working
pointer. But it does not. The pointer point directly to the 1st element
of the array. So using it a pointer to a dyn-array, crashes.
So what should happen?
- Should this code work?
- Should this code give a compile error?
- ?
program project1;
type
TA = array of integer;
PA = ^TA;
var
a : array of integer;
a1: PA;
procedure Foo(var c: array of integer; var c1: PA);
begin
c1:= @c;
writeln(PInteger(c1)^); // writes 100
writeln(c1^[1]); //crash
readln;
end;
begin
SetLength(a,5);
a[0]:= 100;
a[1]:= 101;
a1:=@a;
foo(a,a1);
end.
More information about the fpc-devel
mailing list