Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Реализация менеджера кучи / 20 сообщений из 20, страница 1 из 1
27.12.2012, 15:46
    #38095074
GermanV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация менеджера кучи
Опасаясь ошибок записи в память (из-за прямого доступа), решил создавать заполненные нулями кучи. Далее создается объект- менеджер кучи, который при обращении к нему выдает последовательно куски памяти для объектов с данными. Эти объекты с данными собственными средствами будут анализировать неизменность своих данных ( http://www.sql.ru/forum/actualthread.aspx?tid=993712&pg=-1).

По мере уничтожения кучи ее менеджер анализирует пустое пространство на сохранение заполненности нулями. Таким образом удастся полностью избежать ошибок работы с памятью.

Какие подводные камни не учел юный подован?
...
Рейтинг: 0 / 0
27.12.2012, 16:14
    #38095121
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация менеджера кучи
GermanVПо мере уничтожения кучи ее менеджер анализирует пустое пространство на сохранение заполненности нулями. Таким образом удастся полностью избежать ошибок работы с памятью.
А что объект (class/struct) не может отображаться в нули?
...
Рейтинг: 0 / 0
27.12.2012, 16:24
    #38095136
GermanV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация менеджера кучи
maytonА что объект (class/struct) не может отображаться в нули?

Можно, конечно, выдумывать редкие случаи. Можно придумать, что в кучи были взаимокомпенсирующие записи по недоступному месту. Но мне подобное кажется маловероятным. Условно говоря я не смогу отловить 1 ошибку из миллиона возможных. Приемлемая цена.
...
Рейтинг: 0 / 0
27.12.2012, 16:31
    #38095152
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация менеджера кучи
Ну я вот люблю инициализировать нулями вектора и матрицы.

Код: plaintext
1.
2.
3.
4.
5.
class Point3D {
 double x=0.0;
 double y=0.0;
 double z=0.0;
}



Вполне себе приличный объект. И что? Он будет кандидат на чистку для твоего менеджера?
...
Рейтинг: 0 / 0
27.12.2012, 17:06
    #38095211
GermanV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация менеджера кучи
maytonНу я вот люблю инициализировать нулями вектора и матрицы.

Код: plaintext
1.
2.
3.
4.
5.
class Point3D {
 double x=0.0;
 double y=0.0;
 double z=0.0;
}



Вполне себе приличный объект. И что? Он будет кандидат на чистку для твоего менеджера?

Никаких чисток менеджер производить не будет. Вот его задачи:
1. Первоначальное заполнение кучи нулями
2. Выдача кусков памяти под объекты во время работы
3. Проверка незаполненного пространства на "нулевость" перед удалением кучи.
...
Рейтинг: 0 / 0
27.12.2012, 17:21
    #38095258
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация менеджера кучи
GermanV3. Проверка незаполненного пространства на "нулевость" перед удалением кучи.Задайтесь одним простым вопросом:
Что должен делать ваш кульный диспетчер, обнаружив (не)обнулённые байты в удаляемом куске?

P.S. Вопрос о производительности не задаётся из простого сострадания.
...
Рейтинг: 0 / 0
27.12.2012, 17:43
    #38095292
GermanV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация менеджера кучи
Basil A. SidorovGermanV3. Проверка незаполненного пространства на "нулевость" перед удалением кучи.Задайтесь одним простым вопросом:
Что должен делать ваш кульный диспетчер, обнаружив (не)обнулённые байты в удаляемом куске?

P.S. Вопрос о производительности не задаётся из простого сострадания.

Он должен мне просигнализировать об ошибке. И если такое будет, то я оберну все операции записи проверкой из этого менеджера (которая легко будет отключаться с помощью define).

А что с производительностью?
1. При выделении памяти из кучи с помощью менеджера будет даже ускорение (поскольку он будет возвращать только указатели на свободное место)
2. При работе с данными- так же как и было
3. При удалении кучи- если выделение памяти было адекватным, то ничтожные накладные расходы (где-то в районе половины процента).
...
Рейтинг: 0 / 0
27.12.2012, 17:48
    #38095296
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация менеджера кучи
GermanVА что с производительностью?
...Время на запись нулей и поиск не-нулей, значит, не учитываем ...
Ну-ну.
...
Рейтинг: 0 / 0
27.12.2012, 18:05
    #38095310
GermanV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация менеджера кучи
Basil A. SidorovGermanVА что с производительностью?
...Время на запись нулей и поиск не-нулей, значит, не учитываем ...
Ну-ну.

Вы похоже никогда не выделяли память в куче. Запись нулей происходит о-о-очень быстро. Кстати, если нет менеджера кучи, то это надо делать каждому объекту отдельно, так что при менеджере получается ускорение.

А про поиск не нулей, я уже написал, что займет это не более половины процента от времени работы программы.
...
Рейтинг: 0 / 0
27.12.2012, 19:23
    #38095392
GermanV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация менеджера кучи
Менеджер кучи оказался не нужным :)

Так как выделение памяти из кучи идет в объекте (я не выделяю ее просто так, а под что-то конкретное), то именно в деструкторе объекта пусть и происходит анализ "зануления" неиспользованного места.
...
Рейтинг: 0 / 0
27.12.2012, 19:41
    #38095405
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация менеджера кучи
GermanVМенеджер кучи оказался не нужным :)
3 часа обсуждения псу под хвост
...
Рейтинг: 0 / 0
27.12.2012, 23:47
    #38095569
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация менеджера кучи
GermanVТаким образом удастся полностью избежать ошибок работы с памятью.
Ошибок работы с памятью в С/С++ нельзя избежать. Никак.

GermanVЗапись нулей происходит о-о-очень быстро.
Вы ж сами писали что std::vector медленнее массива.
Вообще-то как раз из-за записи нулей в момент resize()
...
Рейтинг: 0 / 0
28.12.2012, 00:32
    #38095591
GermanV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация менеджера кучи
Anatoly MoskovskyGermanVЗапись нулей происходит о-о-очень быстро.
Вы ж сами писали что std::vector медленнее массива.
Вообще-то как раз из-за записи нулей в момент resize()

Одно с другим никак не связано: зануление кучи происходит при выделении памяти из кучи с помощью API Win32 (надо указать флаг при выделении памяти из кучи), а вектор- это какая-то ерунда (даже не знаю как точно характеризовать этот некачественный код). Вообще STL держится только на том, что целый вагон теоретиков пишут книжки, в которых всю книгу советуют использовать этот STL. Не спорю, что иногда полезно и сам в некоторых местах использую, но очень мало и только в тех местах, где не критично (один/два вызова).
...
Рейтинг: 0 / 0
28.12.2012, 01:24
    #38095610
Edd.Dragon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация менеджера кучи
GermanVа вектор- это какая-то ерунда (даже не знаю как точно характеризовать этот некачественный код).
Ну так свой напишите под свои задачи. Вы ж этим фактически и занимаетесь. Только двигаясь не целенаправлено, а по синусоиде (то менеджер кучи, то вдруг прозрение о назначении конструкторов/деструкторов).

А количество ошибок уменьшают грамотным покрытием тестами, анализаторами типа Valgrind, статическими анализаторами кода, которые находят в коде типичные завтыки программистов, ну и отсутствием спешки.
...
Рейтинг: 0 / 0
28.12.2012, 10:21
    #38095786
Katamaran1987
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация менеджера кучи
GermanVВообще STL держится только на том, что целый вагон теоретиков пишут книжки, в которых всю книгу советуют использовать этот STL. Не пользуйтесь stl,не читайте Майерса, пишите свои велики,менеджеры куч всякие.Смешно читать ерунду которую вы пишите,ваш менеджер куч будет лучше чем алокаторы в stl сто пудов, особенно при "при выделении памяти из кучи с помощью API Win32" к успеху идете.
...
Рейтинг: 0 / 0
28.12.2012, 14:21
    #38096195
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация менеджера кучи
GermanVОдно с другим никак не связано: зануление кучи происходит при выделении памяти из кучи с помощью API Win32 (надо указать флаг при выделении памяти из кучи), а вектор- это какая-то ерунда (даже не знаю как точно характеризовать этот некачественный код).
Вы думаете Винда каким-то другим - волшебным - способом обнуляет память?

Вы немного путаете. Некачественный код, это например код с ошибками работы с памятью, чей автор вместо того, чтобы исправить ошибки, городит подпорки.

А в STL ничего такого нет, ни концептуально, ни в известных реализациях.
То что некоторые не умеют его использовать или применяют не к месту, вообще не говорит о качестве кода.
...
Рейтинг: 0 / 0
28.12.2012, 15:28
    #38096291
GermanV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация менеджера кучи
Edd.DragonGermanVа вектор- это какая-то ерунда (даже не знаю как точно характеризовать этот некачественный код).
Ну так свой напишите под свои задачи. Вы ж этим фактически и занимаетесь. Только двигаясь не целенаправлено, а по синусоиде (то менеджер кучи, то вдруг прозрение о назначении конструкторов/деструкторов).

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

И какой же контейнер проверяет память на "битость"? Зачем ерунду писать?

И хватит про свои контейнеры писать.

Модератор, прошу закрыть тему, поскольку тролли от STL опять активизировались. Ответ я получил.
...
Рейтинг: 0 / 0
28.12.2012, 15:40
    #38096313
Edd.Dragon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация менеджера кучи
GermanVИ какой же контейнер проверяет память на "битость"?
Твоя задумка память на битость тоже не проверяет. Поэтому под ошибками работы с памятью я понимал твою работу, а не компа. Кто ж мог подумать о таких вот забавных фантазиях о решении железных проблем.
...
Рейтинг: 0 / 0
28.12.2012, 15:41
    #38096318
Edd.Dragon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация менеджера кучи
GermanVпоскольку тролли
Всегда проще назвать дураком, чем выяснить что к чему.
...
Рейтинг: 0 / 0
28.12.2012, 15:45
    #38096325
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация менеджера кучи
GermanVМодератор, прошу закрыть тему, поскольку тролли от STL опять активизировались. Ответ я получил.

GermanV, прошу тебя не сильно флудить топиками. И темы должны
соотвествовать подфоруму.

Эту закрываю.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Реализация менеджера кучи / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]