пятница, 29 августа 2008 г.
Mallocator или как написать свой аллокатор
В блоге Visual C++ Team рассказывается как писать собственный аллокатор. Там сказано, что наследование от std::allocator будет не лучшей идеей и приводится пример аллокатора на основе malloc() и free(). В примере достаточно много комментариев и показано, что поменять, чтобы получить аллокатор на свой вкус. Это хорошая отправная точка, если собираетесь написать свой аллокатор.
Posted by
Kirill V. Lyadvinsky
обновлено:
2016-02-15T06:41:14Z
вторник, 19 августа 2008 г.
disabled warnings in BaseClasses
Сегодня при компиляции конструкции вида
обнаружилось, что не выдается предупреждении об использовании константы в выражении. Небольшое расследование показало, что виноваты разработчики Microsoft. В одном из файлов BaseClasses обнаружился такой криминал:
Вывод тут можно сделать только один - нужно проверять файлы даже от доверенных поставщиков кода и, вообще, быть внимательнее.
Чтобы застраховаться в дальнейшем от таких неожиданностей, нужно сохранить состояние по предупреждениям следующим образом:
do {
// some code
} while (false);
обнаружилось, что не выдается предупреждении об использовании константы в выражении. Небольшое расследование показало, что виноваты разработчики Microsoft. В одном из файлов BaseClasses обнаружился такой криминал:
// disable some level-4 warnings, use #pragma warning(enable:###) to re-enable
#pragma warning(disable:4100) // warning C4100: unreferenced formal parameter
#pragma warning(disable:4127) // warning C4127: conditional expression is constant
#pragma warning(disable:4189) // warning C4189: local variable is initialized but not referenced
#pragma warning(disable:4201) // warning C4201: nonstandard extension used : nameless struct/union
#pragma warning(disable:4511) // warning C4511: copy constructor could not be generated
#pragma warning(disable:4512) // warning C4512: assignment operator could not be generated
#pragma warning(disable:4514) // warning C4514: unreferenced inline function has been removed
#pragma warning(disable:4710) // warning C4710: 'function' not inlined
Вывод тут можно сделать только один - нужно проверять файлы даже от доверенных поставщиков кода и, вообще, быть внимательнее.
Чтобы застраховаться в дальнейшем от таких неожиданностей, нужно сохранить состояние по предупреждениям следующим образом:
#pragma warning( push )
// include external stuff
#pragma warning( pop )
Posted by
Kirill V. Lyadvinsky
обновлено:
2013-09-09T11:58:17Z
Labels:
Cplusplus
,
DirectShow
,
Windows
четверг, 14 августа 2008 г.
HD video & Ubuntu
Наконец произошло то, чего я совсем не ждал. NVIDIA выпустила драйвер ветки 173 под Linux, который работает с моим HD телевизором так, как мне того всегда хотелось.
Сначала немного истории... Суть проблемы была в том, что мне подарили телек HD и тут же встал вопрос как его подкючить к компу, чтобы смотреть фильмы. Для начала я тут же поменял свою видеокарту GF6800GT на GF9600GT, т.к. в последней был HDMI выход, что дает всего один кабель, по которому можно передавать звук и видео. Один кабель — это гораздо лучше, чем два. Как купить в России HDMI кабель длинной больше 2 метров — это отдельная история (мне нужен был длиной 7.5 метров). Все было подключено и спрятано в кабельканал плинтуса — просто красота. Но тут же обнаружилась одна проблема — в Ubuntu не заработал звук по S/PDIF (а у NVIDIA именно так он передается на видеокарту). Поиск по форумам дал одну надежду — ждать драйвера ветки 177 и они появились с выходом GeForce 2xx. Все вроде работало неплохо, за одним исключением — звук был очень тихим даже с вывернутым навсю регулятором громкости на компе.
И вот вчера я проверил что новенького на сайте NVIDIA по поводу драйверов. Оказалось, что появились новые рекомендуемые для GF9600GT — 173.14.12. Я по привычке скачал их и уже хотел поставить, как спомнил про проблему со звуком. Но попробовать все равно решил. И тут случилось то, чего я совсем не ожидал — звук не только работал с этими драйверами, но и был настолько громким, что мог бы разбудить соседей :)
Таким образом, на данный момент проблему звука можно считать оканчательно решенной. Ну разве что, кроме одной мелочи — в проигрователе Totem звук не выводится на телевизор, поэтому приходится пользоваться VLC. Пока не разбирался с этим, но думаю как-нибудь решу и эту проблему — тут хотя бы сорсы есть ;)
Сначала немного истории... Суть проблемы была в том, что мне подарили телек HD и тут же встал вопрос как его подкючить к компу, чтобы смотреть фильмы. Для начала я тут же поменял свою видеокарту GF6800GT на GF9600GT, т.к. в последней был HDMI выход, что дает всего один кабель, по которому можно передавать звук и видео. Один кабель — это гораздо лучше, чем два. Как купить в России HDMI кабель длинной больше 2 метров — это отдельная история (мне нужен был длиной 7.5 метров). Все было подключено и спрятано в кабельканал плинтуса — просто красота. Но тут же обнаружилась одна проблема — в Ubuntu не заработал звук по S/PDIF (а у NVIDIA именно так он передается на видеокарту). Поиск по форумам дал одну надежду — ждать драйвера ветки 177 и они появились с выходом GeForce 2xx. Все вроде работало неплохо, за одним исключением — звук был очень тихим даже с вывернутым навсю регулятором громкости на компе.
И вот вчера я проверил что новенького на сайте NVIDIA по поводу драйверов. Оказалось, что появились новые рекомендуемые для GF9600GT — 173.14.12. Я по привычке скачал их и уже хотел поставить, как спомнил про проблему со звуком. Но попробовать все равно решил. И тут случилось то, чего я совсем не ожидал — звук не только работал с этими драйверами, но и был настолько громким, что мог бы разбудить соседей :)
Таким образом, на данный момент проблему звука можно считать оканчательно решенной. Ну разве что, кроме одной мелочи — в проигрователе Totem звук не выводится на телевизор, поэтому приходится пользоваться VLC. Пока не разбирался с этим, но думаю как-нибудь решу и эту проблему — тут хотя бы сорсы есть ;)
Posted by
Kirill V. Lyadvinsky
обновлено:
2008-08-14T06:20:03Z
Подписаться на:
Сообщения
(
Atom
)