IPB
ЛогинПароль:

> 

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Выделение памяти, FPC
сообщение
Сообщение #1


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Что-то я не понимаю, почему для Byte и LongInt выделяется одно и тоже кол-во памяти ?

var
pByte : ^Byte;
pLong : ^LongInt;
mem1, mem2 : LongInt;

begin
mem1 := GetHeapStatus.TotalFree;
New(pByte);
mem2 := GetHeapStatus.TotalFree;
writeln('Для pByte выделено ', mem1 - mem2);
New(pLong);
mem1 := GetHeapStatus.TotalFree;
writeln('Для pLong выделено ', mem2 - mem1);
end.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






А теперь посмотри сюда:

uses crt;
type
TArray = array of byte;

var
A : TArray;

begin
SetLength(A, 10);
SetLength(A, 0);

clrscr;
writeln('Before Init : ', GetHeapStatus.TotalFree);
SetLength(A, 100);
writeln('After Init : ', GetHeapStatus.TotalFree);
SetLength(A, 0);
writeln('After Free : ', GetHeapStatus.TotalFree);
readln;
end.
Чувствуешь? Если ты пытаешься обратиться к GetHeapStatus перед первым обращением к SetLength, то получаешь совсем не то, что получишь после первого SetLength... Скорее всего, для объяснения придется копать в сторону счетчика ссылок (reference count)...

Для начала - глянь здесь: Длинные строки и динамические массивы в Delphi
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 30.11.2021 7:01
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name