![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
alexy |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 44 Регистрация: 4.8.2010 Пользователь №: 1931 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
недавно обнаружил проблему (debian sid) с гццпп - он мне так подвешивает систему, что быстрее просто отправить в перезагрузку. решил воспользоватсья возможностью и перейти на clang
![]() я для прототипа использую python3 и boost::python. кода импортируешь туда класс ,буст может импортировать его как boost::shared_ptr и управлять соответственно. я использую std::shaerd_ptr и вот код (это переделанный код из вики питона) в гцц усе работает. когда говоришь питону del a, где а - это переменная созданная из этого кода, объект не удаляется, он удаляется только при закрытии программы. если закоментировать ptr то объект удаляется сразу - что и требовалось доказать. но! кланг не может это скомпилить ![]() что можно сделать чтобы заставить работать именного clang? g++ --version 4.9.2-10 clang++ --version 3.5.0-9 |
|
|
![]() |
alexy |
![]()
Сообщение
#2
|
Студент ![]() Группа: Участник Сообщений: 44 Регистрация: 4.8.2010 Пользователь №: 1931 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
не совсем понятно, почему GCC "подвешивает систему", но скорее всего он выжирает память. это бывает по двум причинам: использование гигантских статических массивов начинающими программистами или очень большие проекты. в любом случае, вопрос решается использованием ограничений на память через ulimit и увеличением размера свопа. немного не понял. например gcc не осилил скомпилить приведеннй код с этим примером. не знаю от чего это зависит. свопа хватает ![]() у тебя в классе объявлен статический элемент типа shared_ptr. и он действительно создастся при старте и удалится только после завершения программы, когда последняя ссылка (статическое объявление) будет закрыто. вот я как раз об этом. то есть есе работает как я хотел, если удается скомпилить c gcc. может там какие-то настройки не так стоят, что он думает, что компилится не на c++11 ? можно в бусте поставить какой-нибудь макрос руками, чтобы указать, что это именно c++11? |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 16.2.2025, 21:17 |