· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Объектно ориентированное программирование

<< . 1 . 2 .

Посл.отвђт Сообщенiе


Дата: Ноя 16, 2004 23:26:34

А какая разница между памятью выделяемой HeapAlloc, GlobalAlloc(GPTR,...) и VirtualAlloc ???


Дата: Ноя 17, 2004 02:08:04

Разница только в том, как ей управляет ось, т.е. в том предназначении на которое она ориентированна. Например HeapAlloc относится к функциям поддержки кучи. Кучи сами по себе ориентированы на более эффективное использование памяти, когда она требуется для множества мелких объектов (хотя, насколько я знаю, эта эффективность под вопросом). Механизм куч является как бы надстройкой над механизмом виртуальной памяти (к этому механизму относится функции – VirtualXXXX (например: VirtualAlloc)). Функции из семейства GlobalXXXX (например: GlobalAlloc) считаются устаревшими, и по словам Microsoft, поддерживаются для обратной совместимости (хотя некоторые задачи без использования этих функций не выполнить). Механизм виртуальной памяти ориентирован на более эффективное управление большими объектами. Таким образом, подводя итог, скажу: память, выделенная из куч отличается от памяти, выделенной напрямую из виртуальной памяти предполагаемым (но не обязательным) назначением, гранулярностью ее выделения и скоростью работы функций, которые ей управляют. Чем в точности отличаются работа семейства функций VirtualXXXX от GlobalXXXX я не знаю (кроме эффективности).

З.Ы.: Надеюсь не много наврал…


Дата: Ноя 17, 2004 08:54:41

Кто то тут про кашу, говорил и тонко подмеченные мысли!

Так вот если бы я сидел сложа руки, то до сих пор бы думал, а что такое указатель вместо того, что в аттаче! :)
Такое пусть дельфиец набацает и я погляжу где сила!

Теперь о том что я называю виртуальным адресным пространством. Есть Адресное Пространство Процесса(апп) 4 ГБ для вин32. И при каждом запущенном процессе ему отводится свое АПП, так вот оконечное количество байт то должно быть?! А вот скоко всего байт можно выделить под все возможные АПП я считаю Виртуальным Адресным Пространством. Возможно жутко ошибаюсь, так поправьте.

Теперь что понял о ДП в текущий момент в ОЗУ, уже часть занято, а часть нет и вот эта часть как я понял и есть ДП. Так как каждый раз она меняется и то что оно будет в каждый момент одинакового размера говорить нельзя! А ДП это количество байт во вставленной сейчас ОЗУ.

ТАК?

1383958627__pointer.cpp


Дата: Ноя 17, 2004 09:28:01

EvilsInterrupt
> Кто то тут про кашу, говорил и тонко подмеченные мысли!

А ты не обижайся ;-) Но впечатление такое действительно складывается, как оказалось не у меня одного ;-)


Дата: Ноя 17, 2004 10:37:10

>Такое пусть дельфиец набацает и я погляжу где сила!

Не кичись! IMHO любую задачу можно реализовать любым языком программирования. Вопрос стоит о времени написания программы.

2EvilsInterrupt
Не буду голословным - смотри аттач.

_1015984048__pointer.dpr


Дата: Ноя 17, 2004 10:41:15

EvilsInterrupt
Не спорь. Каши много.
Что до Виртуального Адресного Пространства, - да, ты действительно жутко ошибаешься, если думаешь, что операционной системе где-то обломалось дофига гигабайт свободной памяти, и она щедро по 4Гб раздает ее процессам, а все остальное - куча.
Broken Sworda ты читал? Я тоже нет :) Пойду читать, и тебе того же советую. До шестой главы включительно - как минимум. Половина вопросов отпадет сама собой.


Дата: Ноя 17, 2004 16:00:06

Приступаю к вопросу №2:
Есть const int * pAge = new int;

за тем чтобы в эту память ни че было записано, кто следит: компилятор или винда во время выполнение кода?

а если:
int * * const pAge = new int

этот указатель нельзя изменить до компиляции или во вовремя работы кода тоже?


Дата: Ноя 17, 2004 17:10:27

>за тем чтобы в эту память ни че было записано, кто следит: компилятор или винда во время выполнение кода?

компилятор

>этот указатель нельзя изменить

непонятен вопрос. Если идёт речь о значении указателя, то можно


Дата: Ноя 17, 2004 18:51:31

Есть const int * pAge = new int;

Что это за шедевр?

int * * const pAge = new int

А вот от этого у меня вообще глаза на лоб вылезли! 8-()


Дата: Ноя 17, 2004 19:26:05

Ну нету в Винде опреатора new. Поэтому каждый new компилируется в xxxxAlloc.


Дата: Ноя 17, 2004 21:21:24 · Поправил: Oleg_SK

Turkish
„Поэтому каждый new компилируется в xxxxAlloc.“
Я думаю что это не обязательно так... Все зависит от компилятора: как это в нем реализованно. Место может также выделяться не в куче, а на стеке...


Дата: Ноя 17, 2004 22:00:19

Oleg_SK
>Я думаю что это не обязательно так... Все зависит от компилятора: как это в нем реализованно.
ну, компиляторы все же пишут не от балды, а худо-бедно придерживаясь стандарта.


Дата: Ноя 17, 2004 22:56:25

   @@@@     @@@@     @@@@ @@@@ @  @ @  @ @@@ @   @    @@@@@ @  @ @@@@@
   @  @@@@@@@  @     @  @ @  @ @  @ @  @ @   @@ @@      @   @  @   @  
   @ @@     @@ @     @  @ @  @ @  @ @  @ @@@ @ @ @      @   @  @   @  
   @@   @ @   @@@@   @  @ @@@@ @ @@ @@@@ @   @   @      @    @@@   @  
   @     @     @  @  @  @ @    @@ @    @ @   @   @      @      @   @  
   @           @@ @  @  @ @    @  @    @ @@@ @   @      @    @@    @  
    @   @@@   @ @ @                                                   
     @@@   @@@  @ @                                                   
  @@@@  @@@  @@@@ @        @@           @@        @@@@@@@     @@@@    
 @ @           @  @      @@  @@       @@  @@      @     @    @    @   
@ @@           @@@      @      @     @      @     @     @    @    @   
@ @             @       @      @     @      @     @     @         @   
@ @             @       @      @     @      @     @     @         @   
@ @@           @@      @        @   @        @    @     @        @    
@ @@           @       @        @   @        @    @     @       @     
@@ @@@       @@@        @      @     @      @     @     @      @      
     @@@@@@@@@          @      @     @      @     @     @      @      
      @@   @@           @      @     @      @     @     @      @      
     @  @ @  @           @@  @@       @@  @@      @     @             
      @@   @@              @@           @@        @     @      @      

:-)


Дата: Ноя 17, 2004 23:04:01

:)))))))))))))))))))))))))))))))

<< . 1 . 2 .


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.080