Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Простая работа с памятью

45K
04 августа 2009 года
Яски
15 / / 17.07.2009
Всем привет. Я программирую на Action Script 3 это язык потипу Java. В нем выделением и освобождеием памяти занимается язык по принципу сборщика мусора. Мне понадобилось написать большой проект на Си++, причем стабильность работы и скорость написания кода важнее, чем производительность работы приложения. У меня вопрос, какие существуют решения для того, чтобы так плотно не задумываться о ручном выделении и освобождении памяти. У меня есть несколько вариантов как упростить себе жизнь, но они все являются костылями. Интересуют любые варианты. Заранее спасибо.
11
04 августа 2009 года
oxotnik333
2.9K / / 03.08.2007
std::auto_ptr для отдельных объектов
+ для массивов контейнеры (c std::auto_ptr нельзя использовать)
+ есть boost::shared_ptr
288
04 августа 2009 года
nikitozz
1.2K / / 09.03.2007
Никаких. Совсем. Если собираетесь программировать на C++, то избавиться от "ручного" выделения памяти не удастся. Даже использование auto_ptr и прочих смарт указателей не избавит вас от необходимости понимать, что происходит за кулисами (если конечно не хочется проводить долгое время в отладке в поисках какого-то совсем непонятного глюка).
По крайней мере это мое ИМХО.
398
04 августа 2009 года
Alexandoros
630 / / 21.10.2005
Если юзать только boost::shared_ptr, то о памяти можно не задумыватся вообще.
45K
10 августа 2009 года
Яски
15 / / 17.07.2009
Спасибо. Библиотека Boost это то, что нужно. Буду использовать boost::Smart Pointers и std::string вместо Си строк. Еще я слышал, что в существует managed code, в котором такой проблемы не существует. Я пишу плагин для 3DS Max, там расширение функций происходит путем наследования своих классов от стандартных максовских. Получится ли в этом случае использовать managed code?
11
10 августа 2009 года
oxotnik333
2.9K / / 03.08.2007
Цитата: Яски

Еще я слышал, что в существует managed code, в котором такой проблемы не существует. Я пишу плагин для 3DS Max, там расширение функций происходит путем наследования своих классов от стандартных максовских. Получится ли в этом случае использовать managed code?


сам по себе управляемый ЦПП это костыль, нужный что бы связать управляемый код с неупаравляемым. ИМХО браться за него не стоит.
ЗЫ: если макс реализован в виде COM сервера и плагины к нему в том же ключе пишутся, то созданием/удалением объектов занимается ATL, и руками делать ничего не надо.

45K
10 августа 2009 года
Яски
15 / / 17.07.2009
С максом идет скд, в котором есть примеры плагинов. Там не используется COM, все написано на чистом Си++. Так что не думаю, что возможна работа через COM. Хорошо, значит придется придерживаться строгих правил при написании программы: по возможности использовать память на стеке, для памяти не на стеке использовать умные указатели.
11
10 августа 2009 года
oxotnik333
2.9K / / 03.08.2007
эм... какбэ и COM можно реализовать С++... это так к сведению
240
11 августа 2009 года
aks
2.5K / / 14.07.2006
Цитата: Яски
Я программирую на Action Script 3 это язык потипу Java.


Кстати ни разу не по типу Java. =)

45K
11 августа 2009 года
Яски
15 / / 17.07.2009
Цитата: aks
Кстати ни разу не по типу Java. =)


Ну да, к JavaScript поближе.

Не хочется разбираться в COM, мне кажется там гемороя еще больше, чем просто в Си. Мне хотелось бы упростить разработку, с как можно меньшим кол-вом костылей. В Си++ их достаточно. Говорят на Си# очень классно писать, если бы была у меня такая возможность.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог