brag 0 7 июня, 2012 Опубликовано 7 июня, 2012 · Жалоба Касты с char не прокатят, char buf[ sizeof(ClassName) ]; тоже по ходу не прокатит, выравнивание должно быть до 4(а то и до 8) байт. Ну эт такое, можно хоть long long buf[ (sizeof(ClassName)+7)/8]; втулить. p.s. ещё тут кроме placement new ничего дельного не увидел там, 10 страниц гвн :) Только смысл в placement new есть только,если нужно делать отложенную инициализацию, чтобы код не пестрел всякими init()`ами. Что значит ненадёжная? Чем она более ненадёжная, чем любой другой элемент программирования. +1, вполне надежно работает. Конечно, приколы с нехваткой памяти(что может случится теоретически) разруливать сложно, и я склоняюсь к большому стеку для каждого треда + небольшая реорганизация тредов с целью уемньшения количетва тяжелых по стеку тредов до пары штук... Но для этого надо лопатить анализатор стека... Я делал. Только дефрагментацию делал в защищённой секции. Причём не всю дефрагментацию, а лишь её завершающую стадию. Всё работало устойчиво. Ну делать дефрагментацию кучи без MMU - это гемор жуткий: сложные указатели, сложные алгоритмы, куча багов, куча тормозов, да еще и не всегда реализуемо, тк проц может хранить адрес некоторое время у себя внутри(на пример, инструкции ldm/stm, интерруптабельные, к стати) - как мы тогда ему скажем, что адрес изменился? А если есть MMU и страничная адрессация, то и дефраг. особо не нужен, имхо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться