![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
Алекс, так или иначе нужно где-то хранить данные о том что свободно или нет, можно конечно хранить данные единым блоком(монолит), но рано или поздно он начнет дробится.
почитай http://sasm.narod.ru/docs/pm/pm_mem/chap_7.htm второй пример там(там правда про другую память но смысл тот же) чтото не нравится, то выдели себе свой блок большой и расходуй как хочешь ![]() посмотрим как ты хранить будешь ![]() Цитата:
далее, менагер кучи и менагер памяти немного разные понятия, куча итак монолит поидее(см третий абзац, такой же блок как я предлагаю) менагер кучи хранит в ней же инфу о её состоянии. а менагер памяти, обычно вне процесса, но все равно расход есть. хм, дефрагментация...а когда её проводить? самое оптимальное это чтоб сам процесс в свободное время, но а если его не будет? а почему PInteger сразу? может простой pointer/void*? Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. Последний раз редактировалось Пепел Феникса; 11.09.2010 в 20:31. |
|
![]() |
![]() |
![]() |
#12 | ||
Форумчанин
Регистрация: 08.01.2010
Сообщений: 165
|
![]() Цитата:
Цитата:
Оставлять дефрагментацию на потом: Ага. Допустим, мы имеем 1 Гб памяти. Мы запустили приложения A, B и C, каждое из которых съело по 300 мб памяти. Затем мы закрыли приложение B и открыли приложение D, которое требует так же 300 мб. Но, о ужас, у нас не хватает памяти))) Ведь мы решили "оставить пробелы"))) Кстати, если ты хочешь откладывать дефрагментацию "на потом", необходимо где-то хранить информацию об адресах и размерах "оставленных пробелов". Деление на блоки: так память и так сама по себе делится на блоки во всех алокаторах, только на блоки нефиксированного размера, да и хранить указатель для каждого блока, как это предлагаешь делать ты - глупо. Кстати говоря, даже в описанной тобой примитивной реализации необходимо хранить кучу информации об организации памяти (указатель для каждого блока + указатели и размеры на оставленные пробелы). Молодец, придумал систему худшую, чем существующая) PS. Категорически рекомендую не умничать, и не называть разработки других людей "тупой системой", не ознакомившись с вопросом. Прочти для примера "Внутреннее устройство Windows" Руссиновича и "Ядро Linux" Бовета и Чезати Последний раз редактировалось kogemrka; 11.09.2010 в 20:36. |
||
![]() |
![]() |
![]() |
#13 |
Форумчанин
Регистрация: 08.01.2010
Сообщений: 165
|
![]()
Пепел Феникса
Извини, не видел твоего сообщения, когда отправлял своё, вышло так, что написали почти одновременно Кстати говоря, иногда так и приходится делать, когда стандартный аллокатор не устраивает по той или иной причине. Например в box2d (физ. движок для 2d игр) есть свой аллокатор SOA (small object allocator) заточенный на выделение памяти для большого числа маленьких объектов. |
![]() |
![]() |
![]() |
#14 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
извинятся не за что
![]() у нас программистов, чаще есть шанс изменить то что не нравится ![]() (не зря ж занимаюсь разработкой своего ЯП) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#15 |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
![]()
http://wm-help.net/books-online/book/59464/59464-8.html
http://www.transl-gunsmoker.ru/2009/09/blog-post.html http://www.gunsmoker.ru/2009/01/blog-post.html
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Указатели. Динамическая память. | Kazik | Помощь студентам | 2 | 18.01.2014 00:17 |
Указатели.Динамическая память | Solnze2 | Паскаль, Turbo Pascal, PascalABC.NET | 6 | 12.06.2010 10:08 |
[C] массивы, указатели, двойные указатели. | Iggel | Общие вопросы C/C++ | 5 | 05.05.2009 12:39 |
C,символы, указатели, динам.память | ertar | Общие вопросы C/C++ | 6 | 24.12.2008 21:05 |