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

Вниз

Memory, как определить размер и область памяти для нового процеса   Найти похожие ветки 

 
polinom   (2006-01-17 15:05) [0]

Как определить доступную память для нового процесса, размер, область и так чтобы он не смог переопределять собственный размер.
Пример : У моего процесса есть  динамический объект Р , требуется при new(p) и остальных обращений к памяти все динамические объекты размещались в строго определённом заранее выделенном месте памяти !

Помогите решить....!


 
wal ©   (2006-01-17 15:41) [1]

А смысл?


 
Игорь Шевченко ©   (2006-01-17 15:42) [2]

Для объектов - переопределить метод NewInstance.
Для указателей - написать свой Memory Manager

Первое проще


 
polinom   (2006-01-17 15:43) [3]

смысл контроля ресуров памяти


 
Игорь Шевченко ©   (2006-01-17 15:43) [4]


> смысл контроля ресуров памяти


MemProof.exe


 
polinom   (2006-01-17 15:46) [5]

переопределения это гуд, но если я пользуюсь множеством Классов , то это значительно затруднит написание программы!


 
Игорь Шевченко ©   (2006-01-17 15:48) [6]

polinom   (17.01.06 15:46) [5]

Переопредели у предка, унаследуй нужные классы от этого предка. Или используй MemProof для поиска утечек.


 
polinom   (2006-01-17 16:01) [7]

это не решение проблеммы с конролирования памяти это проблема в решение задачи!

например

var p:^Tform
........

p:=getmem(p,sizeof(Tform)); //задаём область памяти
Tform.InitInstance(p);         // инициализируем
p.Create(self);                  //без этого не работает хоть имеет адреса всех    
методов


но после Create хватает кусок не заданной лишней динам. памяти
как быть?


 
polinom   (2006-01-17 16:05) [8]

а нужно так дал 50 кб и пользуйся, так нет кроме этого и ещё хватает!


 
Игорь Шевченко ©   (2006-01-17 16:09) [9]

см. пост [2]


 
polinom   (2006-01-17 16:12) [10]

пост [2] ? я не месный это што?


 
Игорь Шевченко ©   (2006-01-17 16:16) [11]


> пост [2] ? я не месный это што?


Сообщения в ветке нумеруются.

Для объектов - переопределить метод NewInstance.
Для указателей - написать свой Memory Manager


 
polinom   (2006-01-17 16:28) [12]

слушай если можно покажи пример переопределения метода при выполнении или ты имеешь в виду переписать модуль system ?
я недружил до этого с перенаследованием!

А может изменить ссылку на метод, но как тогда узнать адресс ячеек самого указателя, или заранее переписать SYSTEM так чтобы было видно из следующих TObjekt, TComponent, TForm аддес или сам метод?

Как ты считаешь?...........


 
Игорь Шевченко ©   (2006-01-17 16:52) [13]


> покажи пример переопределения метода

unit ParentForm;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
 TfParent = class(TForm)
 public
   class function NewInstance: TObject; override;
   procedure FreeInstance; override;
 end;

var
 FormMemory: array[0..2047] of Byte;

implementation

{$R *.DFM}

{ TfParent }

procedure TfParent.FreeInstance;
begin
 //Do nothing
end;

class function TfParent.NewInstance: TObject;
begin
 Result := Tobject(@FormMemory);
 InitInstance (Result);
end;

end.
   

Главная форма:

unit Main;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 ParentForm, StdCtrls;

type
 TfMain = class(TfParent)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 end;

var
 fMain: TfMain;

implementation

{$R *.DFM}

procedure TfMain.Button1Click(Sender: TObject);
begin
 ShowMessage("Hello, world");
end;

end.


DPR:

program CustomMM;

uses
 Forms,
 ParentForm in "ParentForm.pas" {fParent},
 Main in "Main.pas" {fMain};

{$R *.RES}

begin
 Application.Initialize;
 Application.CreateForm(TfMain, fMain);
 Application.Run;
end.


 
polinom ©   (2006-01-17 17:01) [14]

Спасибо дома попробую.
Как с тобой связаться если можно!?
я sergey.nnby@rambler.ru или ICQ 253539137


 
polinom ©   (2006-01-17 17:04) [15]

Удалено модератором
Примечание: Offtopic


 
Игорь Шевченко ©   (2006-01-17 17:09) [16]


> Как с тобой связаться если можно


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


 
polinom ©   (2006-01-17 17:10) [17]

Удалено модератором


 
polinom ©   (2006-01-17 17:15) [18]

Удалено модератором


 
Игорь Шевченко ©   (2006-01-17 17:23) [19]

"Соблюдайте тематику конференции, сообщения "не в тему" будут просто удаляться! Просто потрепаться вы можете в соответствующей конференции"


 
Leonid Troyanovsky ©   (2006-01-18 08:29) [20]


> polinom   (17.01.06 16:01) [7]

> var p:^Tform
..
> p:=getmem(p,sizeof(Tform)); //задаём область памяти
> Tform.InitInstance(p);         // инициализируем
> p.Create(self);                  //без этого не работает
..
> как быть?


Не надо извращений.

var
 p: TFormX;
 ..
 p:= TFormX.Create(nil);
 ..


--
Regards, LVT.



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

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

Наверх





Память: 0.49 MB
Время: 0.042 c
4-1136969518
menart
2006-01-11 11:51
2006.04.02
оброботка сообщение при записи диска


2-1142514252
zorik
2006-03-16 16:04
2006.04.02
Какую СУБД выбрать?


2-1142399205
Тормаз
2006-03-15 08:06
2006.04.02
Многозадачнасть + SerchFiles


4-1137144109
Andrey C
2006-01-13 12:21
2006.04.02
Програмный клик мышки


9-1127210142
Signate
2005-09-20 13:55
2006.04.02
Рисование массивами - текстурные координаты





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский