Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.11.08;
Скачать: CL | DM;

Вниз

Можно ли занять память таким способом   Найти похожие ветки 

 
Chorniyy   (2009-09-24 02:26) [0]

В глобальных переменных объявлен указатель Р, внутри процедуры я выделяю память под указатель NewP, и присваиваю P новое значение.

var P: Pointer;

Procedure MemChange;
var NewP: Pointer;
begin
 GetMem(NewP,100);
 P := NewP;
end;


встает вопрос: будет ли программа "знать" о том, что память занята указателем P после завершения процедуры MemChange?

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


 
Германн ©   (2009-09-24 02:39) [1]


> встает вопрос: будет ли программа "знать" о том, что память
> занята указателем P после завершения процедуры MemChange?
>
>

Память не может быть "занята указателем"!


 
Chorniyy   (2009-09-24 02:52) [2]


> Память не может быть "занята указателем"!


конечно сам указатель не занимает никакую память (кроме своих 4 байт)

попробую по другому задать вопрос.

Procedure MemChange;
var NewP: Pointer;
begin
GetMem(NewP,100);
end;


после завершения процедуры MemChange память выделенная под NewP освободится?

и освободится ли она в этом случае?:
Procedure MemChange;
var NewP: Pointer;
begin
GetMem(NewP,100);
P := NewP;
end;


 
Германн ©   (2009-09-24 03:04) [3]


> Chorniyy   (24.09.09 02:52) [2]
>
>
> > Память не может быть "занята указателем"!
>
>
> конечно сам указатель не занимает никакую память (кроме
> своих 4 байт)
>
> попробую по другому задать вопрос.
>
> Procedure MemChange;
> var NewP: Pointer;
> begin
> GetMem(NewP,100);
> end;
>
> после завершения процедуры MemChange память выделенная под
> NewP освободится?
>

Нет. Не освободится.

> и освободится ли она в этом случае?:
> Procedure MemChange;
> var NewP: Pointer;
> begin
> GetMem(NewP,100);
> P := NewP;
> end;
>

А этот случай ни чем не отличается от предыдущего.


 
Германн ©   (2009-09-24 03:07) [4]

Кстати.
Термин "освободится" для выделенной приложению памяти не очень подходит.


 
Chorniyy   (2009-09-24 03:08) [5]


> А этот случай ни чем не отличается от предыдущего.

угу. если не освободится, то не отличается.

Спасибо за ответ.


 
Германн ©   (2009-09-24 03:19) [6]


> Chorniyy   (24.09.09 03:08) [5]
>
>
> > А этот случай ни чем не отличается от предыдущего.
>
> угу. если не освободится, то не отличается.
>
> Спасибо за ответ.
>

Ты бы почитал бы книжки. (Учебники).


 
Leonid Troyanovsky ©   (2009-09-24 07:49) [7]


> Chorniyy   (24.09.09 02:26)  

> В глобальных переменных объявлен указатель Р,

Глобальные переменные - MD.

И нет нужды в подобных процедурах, оно делается в секциях
initialization/finalization, которые, во-ще-то, тоже MD.

--
Regards, LVT.


 
Сергей М. ©   (2009-09-24 08:35) [8]


> Leonid Troyanovsky ©   (24.09.09 07:49) [7]


Всё фигня кроме пчёл.
Да и пчёлы тоже фигня.

))



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

Текущий архив: 2009.11.08;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.009 c
2-1253003813
новый
2009-09-15 12:36
2009.11.08
pointer. Не могу разобраться...


2-1253197239
d@vinchi
2009-09-17 18:20
2009.11.08
Обновление данных в DbGrid в реальном времени?


6-1191102532
FearG0
2007-09-30 01:48
2009.11.08
Оценить поток на основе TClientSocket


2-1253510580
Иван Василич
2009-09-21 09:23
2009.11.08
КАк обратиться Query1 из Query2...... ADO


15-1252331396
картман
2009-09-07 17:49
2009.11.08
Словоформы