Форум: "Основная";
Текущий архив: 2005.09.11;
Скачать: [xml.tar.bz2];
ВнизРабота с памятью правильно или нет? Найти похожие ветки
← →
2ksion © (2005-08-17 15:15) [0]Вот код проверьте пожайлусто
procedure TForm1.Button4Click(Sender: TObject);
var
p:Pointer;
v,d,g:integer;
s,m: PChar;
begin
s:="проверка";
v:=lstrlen(s);
d:=v+4;
GetMem(p,d);
move(v,p^,4);
move(s,IncPtr(p,4)^,v);
ShowMessage(inttostr(Sizeof(p)));
move(p^,g,4);
ShowMessage(inttostr(g));
move(IncPtr(p,4)^,m,v);
ShowMessage(strpas(m));
FreeMem(p);
end;
function IncPtr(APointer: pointer; AHowMuch: cardinal = 1): pointer;
begin
//тут наращиваеться адресс Pointer
Result := Ptr(cardinal(APointer) + AHowMuch);
end;
← →
Digitman © (2005-08-17 15:17) [1]
> код проверьте пожайлусто
и на какой предмет проверять ?
← →
2ksion © (2005-08-17 15:27) [2]на предмет правильности с move
← →
Digitman © (2005-08-17 17:01) [3]смотрим в прототип (system.pas):
procedure Move(const Source; var Dest; Count: Integer);
делаем умозаключения :
1. move(v,p^,4); - неверно : v не является адресом источника (Source)
2. move(s,IncPtr(p,4)^,v); - неверно : s не является адресом источника
а дальше и рассматривать нет резона.
← →
Digitman © (2005-08-17 17:03) [4]
> d:=v+4;
это - какое-то шаманское таинство, мне неведомое.
← →
Digitman © (2005-08-17 17:07) [5]и вообще - галиматья полная в приведенном коде.
← →
Anatoly Podgoretsky © (2005-08-17 20:30) [6]2ksion © (17.08.05 15:27) [2]
Неправильно
← →
Defunct © (2005-08-18 01:50) [7]> ShowMessage(inttostr(Sizeof(p)));
Это задумывалось для вывода на экран количества выделенной памяти?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.09.11;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c