Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > ОС и железо
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.09.2010, 13:43
Аватар для Моклев
Моклев Моклев вне форума
Новичок
 
Регистрация: 27.02.2009
Адрес: Лен. обл., г. Коммунар
Сообщения: 53
Версия Delphi: 7 и 2010
Репутация: 16
По умолчанию Оперативная память

В общем я в этом совсем не шарю, кому не трудно, объясните.
Как я понимаю, когда мы создаем переменные через var и через New/Dispose мы занимаем кэш (или нет? если нет, то что мы занимаем?)
А как можно что-то записать в оперативную память, а потом оттуда считать?
Ответить с цитированием
  #2  
Старый 09.09.2010, 14:51
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

справку по New смотрели?
Код:
type

  PListEntry = ^TListEntry;
  TListEntry = record
    Next: PListEntry;
    Text: string;
    Count: Integer;
  end;
var
  List, P: PListEntry;
begin
  ...
  New(P);
  P^.Next := List;
  P^.Text := 'Hello world';
  P^.Count := 1;
  List := P;
  ...
end;
здесь New(P); выделяет кусок памяти размером SizeOf(TListEntry). т.к. P это тип PListEntry, а PListEntry это указатель на TListEntry, а TListEntry это структура)
__________________
Пишу программы за еду.
__________________

Последний раз редактировалось NumLock, 09.09.2010 в 15:17.
Ответить с цитированием
  #3  
Старый 09.09.2010, 15:19
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
type
  Tr = ^r;
  r = record
    i: Integer;
    b: Byte;
    w: Word;
    d: DWORD;
    a: array [0..$ff] of Byte;
  end;
var
  p: Tr;
  i: Integer;
  b: Byte;
  w: Word;
  d: DWORD;
  a: array [0..$ff] of Byte;
begin
  Edit1.Text:='SizeOf(p)='+IntToStr(SizeOf(p))+' SizeOf(p^)='+IntToStr(SizeOf(p^));
  New(p);
  p^.i:=1;
  p^.b:=2;
  p^.w:=3;
  p^.d:=4;
  p^.a[0]:=5;
  p^.a[1]:=6;
  i:=p^.i;
  b:=p^.b;
  w:=p^.w;
  d:=p^.d;
  Dispose(p);
end;
SizeOf(p)=4 SizeOf(p^)=268
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #4  
Старый 10.09.2010, 16:22
Аватар для Моклев
Моклев Моклев вне форума
Новичок
 
Регистрация: 27.02.2009
Адрес: Лен. обл., г. Коммунар
Сообщения: 53
Версия Delphi: 7 и 2010
Репутация: 16
По умолчанию

не, вы помоему не поняли, как работать с типами, указателями, адресами и фунциями выделения/освобождения памяти (new/dispose) я прекрасно знаю)
я не понимаю, как работать с оперативной паматью, а не с тем, что я сейчас перечислил (если это не одно и тоже)
Ответить с цитированием
  #5  
Старый 11.09.2010, 12:35
Аватар для Thrasher
Thrasher Thrasher вне форума
Illuminati
 
Регистрация: 06.03.2008
Адрес: Крым, г. Симферополь
Сообщения: 348
Репутация: 8808
По умолчанию

Каждому процессу отводиться определенное количество памяти (все это дело загрузчик читает из заголовка EXE). Для выделения дополнительной памяти используются функции MemAlloc, для освобождения MemFree (более детально - в MSDN).

При помощи функции Addr можно получить адрес и писать/читать информацию.

Лично для меня чтение из памяти ( и запись в нее) гораздо проще делать при помощи ассемблера, хотя можно обойтись и штатными средствами Дельфи - через указатели.

Что касается переменных - те что объявлены через var все "живут" в стеке, когда остальные "живут" в "куче" (heap). И к тем и к другим доступ всегда есть.

Что касается кэша - туда руками лазить запрещено да и невозможно в принципе. (Да и зачем?)
__________________
Хорошо написанная программа не требует документации
ICQ 9-184-668.
Ответить с цитированием
  #6  
Старый 11.09.2010, 16:21
Аватар для Моклев
Моклев Моклев вне форума
Новичок
 
Регистрация: 27.02.2009
Адрес: Лен. обл., г. Коммунар
Сообщения: 53
Версия Delphi: 7 и 2010
Репутация: 16
По умолчанию

спасибо, понял
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:32.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter