Ned
спасибо, алекс
Ned
а надо ли в этом операторе высвободить память, которая была занята?
Vladislav
вообще, ownership данных лучше сделать через vector или unique_ptr<T[]>, а не вручную, тогда ты получишь move assignment (и copy assignment для вектора) бесплатно
Ned
типа вот объект A, он выделил 110 интов. когда ему присваивают объект на 30 интов, он должен отпустить 110, занять 30, скопировать. так ле?
Ned
переносить нехоцца, надо глубинное копирование
Ned
вдруг область данных удалится?
Vladislav
можно пррсто к примеру перенести указатель
это будет auto_ptr-like семантика, что не есть хорошо
Vladislav
в эпоху c++11
🦥Alex Fails
Vladislav
загадка: почему так? https://ideone.com/HfM1BP
Vladislav
переполнение?
да, но откуда бесконечный цикл?
Крылатый
Занятно, что на мелпоне работает http://melpon.org/wandbox/permlink/K11iidyC3CovtsxY
Крылатый
https://ideone.com/YJBOpt
Крылатый
Да походу баг прост.
Vladislav
зависит от компилятора и уровня оптимизации, но это не баг
Dumitru
а почему i меняет свое значение ?
Dumitru
перекрывает какой-то кусок памяти ?
Cinder
”Маркетолог спрашивает программиста: в чём сложность поддержки большого проекта? Программист: ну представь, что ты писатель и поддерживаешь проект “Война и мир”. У тебя ТЗ — написать главу как Наташа Ростова гуляла под дождём по парку. Ты пишешь “шёл дождь”, сохраняешь, вылетает сообщение об ошибке “Наташа Ростова умерла, продолжение невозможно”. Почему умерла? Начинаешь разбираться. Выясняется, что у Пьера Безухова скользкие туфли, он упал, его пистолет ударился о землю и выстрелил в столб, а пуля от столба срикошетила в Наташу. Что делать? Зарядить пистолет холостыми? Поменять туфли? Решили убрать столб. Получаем сообщение “Поручик Ржевский умер.” Выясняется, что он в следующей главе облокачивается о столб, которого уже нет...” rol_foster: Сегодня полдня искали ошибку, из-за которой, образно говоря, у Наташи при прогулке с Пьером падают трусы. Одна из функций программы делает то, что делать не должна. Откатили на вчера - трусы на месте. Перелопатили весь код обновления, там вообще ни трусов, ни Наташи, ни даже Ржевского, тупо красят дом Болконских. Чуть ли не пошагово разбираем - все нормально. Но трусы падают. И, чтобы найти причину, придется перелопатить весь код, а это недели две минимум. В общем, начальник задумчиво посмотрел на девушку и волевым решением выдал Наташе подтяжки.
Крылатый
Да
Крылатый
С -O3 влетает...
Detur
компилятор как-то по-хитрому разворачивает умножение
Artem
Оно выносит умножение, лол
Detur
может через lea
Крылатый
А
Крылатый
UB?
Detur
надо короче ассемблерный код смотреть
Крылатый
https://godbolt.org/g/fakMyl
Artem
Назальные демоны
Vladislav
верно, переполнение signed int - UB, поэтому компилятор имеет право оптимизировать цикл до #include <iostream> int main() { for (int i = 0; i < 4000000000; i += 1000000000) { std::cout « i « std::endl; } }
Крылатый
Жесть какая.
Vladislav
мораль: будьте осторожнее с переполнениями, если они важны для семантики то делайте их в unsigned типах, для которых это разрешено стандартом
Алдар
в джаве кстати отказались от unsigned типов
Крылатый
Почему?
Vladislav
в джаве кстати отказались от unsigned типов
да, правда в java8 добавили методы для работы с signed числами как будто они unsigned (хоть и несколько через жопу)
🦥Alex Fails
Не надо использовать инт для индексов, надо использовать size_t
Алдар
Почему?
чтобы джавистам было полегче
🦥Alex Fails
И дохуя проблем в джаве от этого
Rafael 🌵
Надо использовать либо uint32 или uint64
Rafael 🌵
С size_t заколебешься отлаживать код
Kirill
смотря что вам нужно, если внутри куча свичкейсов то size_t, если например как у меня сейчас енум это кокнкретное значение, только именованное, то его тип
Крылатый
Надо использовать либо uint32 или uint64
А если у меня 16тиразрядная система?)
Крылатый
Надо юзать auto!
Крылатый
auto — лучший тип
Dumitru
Надо юзать auto!
у меня auto определяет как int в цикле
Kirill
ага и потом код - ехал auto через auto видит auto в реке auto
Kirill
и хер пойми что это за тип
Vladislav
Dumitru
Vladislav
void* ))
жаль, не бывает void& (
Ned
Я прост хз
Vladislav
беззнаковый
🦥Alex Fails
А сайзт он знаковый ор нот?
Unsigned, sizeof(size_t) == максимальному адресуемому индексу в памятм
Ned
Unsigned, sizeof(size_t) == максимальному адресуемому индексу в памятм
Да какбе логично. И не максимальному, а (битности архитектуры)/8
Ned
По логике
Ned
Или это какая-то изъёбистая фишка?
Rafael 🌵
каким оьразом?
У меня на первом курсе была как траьла с ним, но я не понмю почему :с
🦥Alex Fails
http://www.viva64.com/ru/t/0044/
🦥Alex Fails
У меня на первом курсе была как траьла с ним, но я не понмю почему :с
А с uint32 будут проблемы с другим overflow – не знаковый, а целочисленный
🦥Alex Fails
На 64 битах, к примеру
Square
Не помню откуда - нашёл у в открытых вкладках занятное чтиво
Square
http://www.gamedev.net/page/resources/_/technical/general-programming/game-engine-containers-handle-map-r4495
Rafael 🌵
что посоветуете для логирования и почему?
Крылатый
Зависит от того, где юзаться будет
Крылатый
Я б предложил https://github.com/Iyengar111/NanoLog
Крылатый
Но однако https://github.com/Iyengar111/NanoLog/issues/4
Крылатый
Хм, ишуй закрыли. Стал чуть быстре spdlog
Rafael 🌵
что про это скажите? https://github.com/KjellKod/g3log