img
00:00
imgDRKB online - Динамическое распределение памяти
imgimgimg
  
  [drkb=327] Комментариев: 0 
Динамическое распределение памяти

delphi
uses WinCRT;

procedure TForm1.Button1Click(Sender: TObject);
var
  MyArray: array[0..30] of char;
  b: ^char;
  i: integer;
begin
  StrCopy(MyArray, 'Delphi World - это круто!!!');
  b := @MyArray;
  for i := StrLen(MyArray) downto 0 do
  begin
    write(b^);
    inc(b, sizeof(char));
  end;
end;



@Drkb::00812
http://delphiworld.narod.ru/
DelphiWorld 6.0


Как мне уменьшить количество занимаемой мной памяти в сегменте данных? (или как мне распределять память динамически?)

Скажем, ваша структура данных выглядит похожей на эту:

delphi
type
  TMyStructure = record
    Name: String[40];
    Data: array[0..4095] of Integer;
end;


Она слишком большая для глобального распределения, так что вместо объявления глобальной переменной,

var
MyData: TMyStructure;

объявляете указательный тип,

type
PMyStructure = ^TMyStructure;

и переменную этого типа,
var
MyDataPtr: PMyStructure;

Такой указатель занимает всего лишь четыре байта сегмента данных.

Прежде, чем вы сможете использовать структуру данных, вы должны распределить ее в куче:

New(MyDataPtr);

и получить к ней доступ через глобальные данные любым удобным для вас способом. Единственное отличие от традиционного способа заключается в необходимости использования символа "^" для обозначения указателя на данные:

delphi
MyDataPtr^.Name := 'Советы по Delphi';
MyDataPtr^.Data[0] := 12345;


И, наконец, после использования памяти, освободите ее:

Dispose(MyDataPtr);

Примечание от Vit: статья актуальна в основном для 16 разрядных систем

@Drkb::00813
http://delphiworld.narod.ru/
DelphiWorld 6.0
Количество статей: 4366
 
Вход
Имя:
Пароль:
Запомнить
Регистрация Забыли пароль?
Мини-чат :)
Необходима регистрация
Архив мини-чата
26-03-2024 15:49
Roan
Надеюсь, оно ещё живо. Классный ресурс
03-03-2024 16:34
ПаХаН
Надо чтобы этот сайт был жив
20-02-2024 06:12
memoryspeak
обалденный сайт. искал ответ на вопрос, как скриптом закрыть вкладку, и наткнулся на это чудо.
08-02-2024 20:22
stark452
Разработчику огромный респект
08-02-2024 20:21
stark452
Если ее немного допилить
и сделать все правильно
то она может стать чем то весомым
08-02-2024 20:20
stark452
Странно что эта штука не популярна
08-10-2023 02:39
Darian
smiley
just testing the smileys
08-10-2023 02:38
Darian
._. -_- >o) ;(
08-10-2023 02:37
Darian
smiley
08-10-2023 02:36
Darian
smiley smiley smiley smiley :$ :?
Emoji Test
Статистика
 СегодняВсего
Посетителей23734252270
Запросов79354396929663
Online
Пользователей0
Гостей475
imgimgimgimg
 
img
     00:00