О производительности динамических массивов...
Модератор: Модераторы
>>то имитация динамического массива с GetMem/FreeMem под капотом.
это и есть классический чассив. а ты про что подумал?
это и есть классический чассив. а ты про что подумал?
Так это я как раз хотел у тебя уточнить. Вот дока говорит что есть два типа массивов, статические и динамические. Который из них классический?zub писал(а):а ты про что подумал?
Да, что я неясно выражаюсь. Классический=статический в моей голове))
Ага, я почему-то именно так и подумал. Тем не менее, сколько я ни смотрел в код этого поделия, никаких следов статических массивов там не обнаружил.zub писал(а):Классический=статический в моей голове))
Выделение памяти, доступ через индексацию указателя - тот же статический массив
Да не, это просто путаница, конечно. Статический массив это тип данных, фиксирующий тип элемента, размерность, а также нижнюю и верхнюю границы индексов. И для переменной этого типа не требуется ручного выделения памяти.zub писал(а):Выделение памяти, доступ через индексацию указателя - тот же статический массив
>>Статический массив это тип данных, фиксирующий тип элемента, размерность, а также нижнюю и верхнюю границы индексов.
>>И для переменной этого типа не требуется ручного выделения памяти.
??
>>И для переменной этого типа не требуется ручного выделения памяти.
??
Код: Выделить всё
program Project1;
const
ElemCount=1000;
type
PMyArr=^TMyArr;
TMyArr=array [0..0] of Integer;
var
PArr:PMyArr;
i:Integer;
begin
PArr:=GetMem(ElemCount*SizeOf(TMyArr[0]));
for i:=0 to ElemCount-1 do
PArr^[i]:=i;
for i:=0 to ElemCount-1 do
WriteLn(PArr^[i]);
Freemem(PArr);
readln;
end.Да не, статический массив это
А то что у тебя, это грязный хак для получения индексированного доступа к памяти в куче, придуманный во времена отсутствия динамических массивов.
Код: Выделить всё
program Project1;
const
ElemCount=1000;
type
TMyArr=array [1..ElemCount] of Integer;
var
Arr:TMyArr;
i:Integer;
begin
for i:=1 to ElemCount do
Arr[i]:=i;
for i:=1 to ElemCount do
WriteLn(Arr[i]);
readln;
end.
На таком совсем статическом массиве в реальной жизни далеко не уедешь. а ездить было нужно и до появления динамических массивов, и сейчас бывает нужно ехать чуток быстрее динамических массивов))
Это и есть классика))
В той самоделке все чуток в си стиле сделано, воттак:
зы. самоденлка эта сделана очень продумано. рекомендую
Это и есть классика))
В той самоделке все чуток в си стиле сделано, воттак:
Код: Выделить всё
program Project1;
const
ElemCount=1000;
type
PMyArr=^Integer;
var
PArr:PMyArr;
i:Integer;
begin
PArr:=GetMem(ElemCount*SizeOf(PMyArr^));
for i:=0 to ElemCount-1 do
PArr[i]:=i;
for i:=0 to ElemCount-1 do
WriteLn(PArr[i]);
Freemem(PArr);
readln;
end.