@ProCxx

Страница 1677 из 2477
Berkus
21.01.2018
14:55:56
Почему объект не удаляетсч, если остались вики, но нет шаредов?
объект удалился, ты же видишь что деструктор вызвался

Oleg
21.01.2018
14:56:33
Нет же.

Там проверка на канутер виков. Еслм где-то есть вик, то не удаляется

Berkus
21.01.2018
14:56:56
For make_shared: allocating 416 bytes destructor MyLargeType <---- ВОТ ЖЕ scope end... global op delete called

Google
Oleg
21.01.2018
14:57:40
void _Decwref() { // decrement weak reference count if (_MT_DECR(_Weaks) == 0) { _Delete_this(); } }

Если где-то хранится вик, то delete-this не вызовется

Berkus
21.01.2018
14:58:57
Если где-то хранится вик, то delete-this не вызовется
это в shared_ptr если что, твой объект удалился уже

Oleg
21.01.2018
14:59:38
Не понял. Объект удалился, но память не освободилась?

Alejandro
21.01.2018
14:59:55
Berkus
21.01.2018
14:59:57
Oleg
21.01.2018
15:01:35
Хм, я как-то раньше не задумывался о том, что при удалении шареда память может не освободиться

Олег
21.01.2018
15:03:48
Прикольно. Я теперь понял, что именно делают weak_ptr (в каком именно месте при правильном их использовании разрываются циклические зависимости объектов).

Alex Фэils?︙
21.01.2018
15:21:23
Все прогоняли
закинул микро-ревью по сборке тревиса

Alex Фэils?︙
21.01.2018
15:37:21
там можно поменять генерацию опкодов

Berkus
21.01.2018
15:37:25
Google
Berkus
21.01.2018
15:58:42
https://www.youtube.com/watch?v=rTo2u13lVcQ немного издевательства над с++ со стороны растовщиков

Антон
21.01.2018
15:59:38
https://www.gitbook.com/download/pdf/book/tra38/essential-copying-and-pasting-from-stack-overflow хмххмхмхмххм

Alexander
21.01.2018
16:06:50
Berkus
21.01.2018
16:13:18
а что в расте случает ся при переплонении int?
https://godbolt.org/g/u1YFiZ строка 41 и строка 52

Alexander
21.01.2018
16:14:08
а в рантайме?

компилятор же не будет добавлять проверки такие в рантайм подсчёты

такое я думаю и крестовые компиляторы ловят. включи pedantic и -fsanitize=integere-overflow (или как он там зовётся)

Berkus
21.01.2018
16:16:26
ты не умеешь читать код? посмотри, там 10 строчками выше рантайм проверка

строка 6 и строка 24

Alexander
21.01.2018
16:18:02
ты передал константы и радуешься, что он отловил ошибки

найс

так ты с клавиатуры ввод орагнизуй. как в такой ситуации раст себя ведёт?

Berkus
21.01.2018
16:18:33
не тупи

ты передал константы и радуешься, что он отловил ошибки
ТАМ РАНТАЙМ ПРОВЕРКИ В ПРОЦЕДУРАХ В СТРОКАХ 6 И 24

Alexander
21.01.2018
16:19:07
а, блядь. пролистать мне не судьба

окей - а как такое отключить?

Berkus
21.01.2018
16:19:37
перейти на с++

Alexander
21.01.2018
16:19:46
перейти на с++
флага точно никакого нет?

Berkus
21.01.2018
16:20:08
есть, RUSTC=gcc в переменных среды

Google
Berkus
21.01.2018
16:20:16
но писать придется на си

Alexander
21.01.2018
16:20:24
?

понял. пасиб

Berkus
21.01.2018
16:25:46
понял. пасиб
подозреваю что есть способ, ща

Alexander
21.01.2018
16:26:13
подозреваю что есть способ, ща
http://huonw.github.io/blog/2016/04/myths-and-legends-about-integer-overflow-in-rust/ я вот что нашёл

Alexander
21.01.2018
16:33:14
https://godbolt.org/g/3Gn3Su
о, проверки убрал. но переполнение осталось. Окей

Berkus
21.01.2018
16:37:25
о, проверки убрал. но переполнение осталось. Окей
статья кстати верная, хоть и старая

Серж
21.01.2018
18:01:32
подозреваю что есть способ, ща
Проверки и паника при переполнении только в дебаг билде, в релиз билде проверок нет

Berkus
21.01.2018
18:02:17
и что у нас случается при переполнении?
то что описано в спеке - two's complement wrap

Серж
21.01.2018
18:02:38
Но это не точно, один раз не растошиан

Да то же что и в си

Berkus
21.01.2018
18:03:04
Да то же что и в си
нет, в си случается UB

а в расте нет

можно прочитать если что, полезно

Admin
ERROR: S client not available

Google
Berkus
21.01.2018
18:03:53
http://huonw.github.io/blog/2016/04/myths-and-legends-about-integer-overflow-in-rust/ я вот что нашёл

Серж
21.01.2018
18:05:59
Да, хотел на это ссылку кинуть, выжимки: in debug mode, arithmetic (+, -, etc.) on signed and unsigned primitive integers is checked for overflow, panicking if it occurs, and, in release mode, overflow is not checked and is specified to wrap as two’s complement.

Berkus
21.01.2018
18:18:23
> is specified to wrap as two’s complement. никакого UB как видишь

Ioann V
21.01.2018
18:23:02
Ребят. Нубо вопрос. Как можно узнать подробную спецификацию своего процессора ? Ну типа, количество регистров для dbl precission вычислений и так далее ?

Ioann V
21.01.2018
18:24:17
Да я не из С++ хочу, кек. Я хотел просто программно :) Через готовенькое уже.

Berkus
21.01.2018
18:26:54
портабельно никак

Alexander
21.01.2018
19:03:40
https://kristerw.blogspot.com.by/2018/01/gcc-back-end-performance-tuning.html

fox.cpp
21.01.2018
22:07:46
Парни, уткнулся в SIGSEGV, когда написал наследника std::error_category и заменил им std::system_category(). test_category instance; void test(std::error_code& ec) { ec = {1, test_category()}; // If replaced with: ec = {1, std::system_category()}; // or with: ec = {1, instance}; // then it works. } int main() { std::error_code ec; test(ec); ec.message(); // SIGSEGV here } Добавил виртуальный деструктор в test_category, как и положено, вызывается при выходе из test. Меня очень сильно удивило то, что всё прекрасно работает с категорией из std. Почему так и есть ли варианты фикса моего случая кроме глобального экземпляра? — Полный минимальный воспроизводимый пример, вывод LLDB, UBSan и Valgrind: https://hastebin.com/cegegirodi.cpp

Alexander
21.01.2018
22:09:39
ec = {1, test_category()}; какой конструктор тут вызывается?

fox.cpp
21.01.2018
22:12:16
Дефолтный конструктор test_category, разумеется. Добавил его, вызывается исправно.

Alexander
21.01.2018
22:21:17
Дефолтный конструктор test_category, разумеется. Добавил его, вызывается исправно.
error_code(int __v, const error_category& __cat) noexcept : _M_value(__v), _M_cat(&__cat) { } const error_category* _M_cat;

он запоминает указатель на твою категорию. отсюда и ошибка

fox.cpp
21.01.2018
22:23:17
Хорошо, только... Каким боком с std::system_category работать может?

Я что-то совсем теряюсь в догадках.

И, блин, почему нет виртуальных конструкторов копирования?)

Berkus
21.01.2018
22:25:35
потому что они нинужны?

Alexander
21.01.2018
22:26:12
Obtains a reference to the static error category object for errors reported by the operating system.

Google
Berkus
21.01.2018
22:26:26
Хорошо, только... Каким боком с std::system_category работать может?
а посмотреть в сорцы system_category() - оно поди синглтон

Berkus
21.01.2018
22:26:38
а, ну вот

fox.cpp
21.01.2018
22:26:39
Блин.

Обманщики.

Я думал, что это тип(

Страница 1677 из 2477