Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.11.12;
Скачать: [xml.tar.bz2];

Вниз

Последовательный доступ к памяти   Найти похожие ветки 

 
Riply ©   (2006-10-26 18:29) [0]

Добрый вечер !
Скажите пожалуйста, могу ли я быть уверена, что в процедуре:
procedure MyProc(var pData: Pointer);
var
i: integer;
Ptr: Pointer;
begin
ReallocMem(pData, 1024 * SizeOf(Integer));
Ptr:= pData;
for i:= 0 to 1023 do
 begin
  CopyMemory(Ptr, @i, SizeOf(Integer));
  Ptr:= Pointer(Integer(Ptr) + SizeOf(Integer));
 end;
end;

я пишу именно в pData ?
Т. е. Не может ли быть такого, что pData "разбита на кусочки" ?


 
Ketmar ©   (2006-10-26 18:49) [1]

хихик. а как ты себе это представляешь? и зачем? нет, не может. любая операция выделения памяти или выделяет последовательный кусок или падает.


 
Leonid Troyanovsky ©   (2006-10-26 18:53) [2]


> Riply ©   (26.10.06 18:29)  

>   CopyMemory(Ptr, @i, SizeOf(Integer));


Не надо CopyMemory.
Во-первых, есть Move.
Во-вторых первое лишь вызывает второе.

--
Regards, LVT.


 
Riply ©   (2006-10-26 19:01) [3]

Спасибо


 
Riply ©   (2006-10-26 19:05) [4]

>Ketmar ©   (26.10.06 18:49)
И вовсе не "хихик"
Я вот не сумела найти где это написано: "любая операция выделения памяти или
выделяет последовательный кусок или падает."


 
Leonid Troyanovsky ©   (2006-10-26 19:05) [5]


> Riply ©   (26.10.06 18:29)  

>   Ptr:= Pointer(Integer(Ptr) + SizeOf(Integer));


Обычно поступают так:
объявляют тип массив некоторой (большой) размерности,
и используют PMyArray = ^TMyArray для доступа к
его элементам, т.е. PMyArray(Ptr)[i] := ..

На худой конец: inc, dec знают арифметику типизированных указателей.

--
Regards, LVT.


 
Ketmar ©   (2006-10-26 19:13) [6]

>[4] Riply(c) 26-Oct-2006, 19:05
>И вовсе не "хихик"
>Я вот не сумела найти где это написано
у меня в [1]. %-)
голова -- она не только для еды. как ты думаешь, если бы эти операции возвращали фрагментированую память, были бы в Delphi специальные конструкции для работы с указателями и фрагментированой памятью? ага. а их -- нет.

а ещё есть чудесная вещь такая -- исходники memory manager. %-)

зыж моё "хихик" обозначает вовсе не издёвку. издеваюсь я по-другому. %-)



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.11.12;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.044 c
6-1150873944
skiermax
2006-06-21 11:12
2006.11.12
список портов


2-1161894494
!aLeXa!
2006-10-27 00:28
2006.11.12
Как сделать "критический" dialog?


2-1161778513
kirillrepin
2006-10-25 16:15
2006.11.12
tray с использованием rxlib


15-1161414059
Руслан
2006-10-21 11:00
2006.11.12
Как добавить виртуальный хост в апач?


1-1159471239
guav
2006-09-28 23:20
2006.11.12
Аналог GetTextExtentPoint32 / GetTextExtentExPoint / TCanvas.Text





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский