- Код: Выделить всё
procedure test;
var
a:array[0..9] of byte;
a1:array of byte;
ai:array[0..9] of integer;
ai1:array of integer;
s:integer;
begin
s:=0; // s = 0
SetLength(a1,10);
s:=SizeOf(a); // s = 10
s:=SizeOf(a1); // s = 4
FillChar(a1, SizeOf(a1), #0);
s:=SizeOf(a1); // s = 4
SetLength(ai1,10);
s:=SizeOf(ai); // s = 40
s:=SizeOf(ai1); // s = 4
FillChar(ai1, SizeOf(ai1), #0);
s:=SizeOf(ai1); // s = 4
ai1[1]:=1; // возникает ошибка 'External: SIGSEGV'
end;
Собственно говоря интересует:
1. Почему разные размеры у переменных a и a1, ai и ai1?
2. Почему размеры переменных a1 и ai1 совпадают?
3. Почему вылезает ошибка?
Я наверное неправильно создаю динамические массивы?
Пример запускаю в лазаре (см. подпись), но по моему вопросы касаются только FPC поэтому и пишу в эту ветку.