Size: a a a

2020 August 14

CD

Constantine Drozdov in rust_offtopic
Casual tears
когда у тебя std::vector<std::unique_ptr<T>> перестанет память занулять перед деаллокацией после реаллокации в push_back так и приходи
ась?
источник

Ct

Casual tears in rust_offtopic
Твой "деструктивный" мув выставит все "мувнутые" поинтеры в nullptr для памяти, которая уже не нужна
источник

RP

Roman Proskuryakov in rust_offtopic
Constantine Drozdov
для твоих ног-то точно, а мувы деструктивные)
эээ
источник

RP

Roman Proskuryakov in rust_offtopic
мда.
источник

CD

Constantine Drozdov in rust_offtopic
Casual tears
Твой "деструктивный" мув выставит все "мувнутые" поинтеры в nullptr для памяти, которая уже не нужна
Зависит от того, насколько тупой оптимизатор, он имеет право не нулить
источник

RP

Roman Proskuryakov in rust_offtopic
лол
источник

Т8

Т-34 85 in rust_offtopic
Casual tears
Покажи мне где в доках gcc написано что дереференс nullptr дает sigsegv
https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html

-fdelete-null-pointer-checks

   Assume that programs cannot safely dereference null pointers, and that no code or data element resides at address zero. This option enables simple constant folding optimizations at all optimization levels. In addition, other optimization passes in GCC use this flag to control global dataflow analyses that eliminate useless checks for null pointers; these assume that a memory access to address zero always results in a trap, so that if a pointer is checked after it has already been dereferenced, it cannot be null.

   Note however that in some environments this assumption is not true. Use -fno-delete-null-pointer-checks to disable this optimization for programs that depend on that behavior.
источник

RP

Roman Proskuryakov in rust_offtopic
челик просто не понимает что такое деструктивный мув)
источник

RP

Roman Proskuryakov in rust_offtopic
и чем указатели отличаются от интов
источник

RP

Roman Proskuryakov in rust_offtopic
божечки мои, как же так
источник

Т8

Т-34 85 in rust_offtopic
вот тут написано, как заставить компилятор определить поведение при разыменование 0
источник

CD

Constantine Drozdov in rust_offtopic
любишь кидаться кирпичами? прочитай внимательно  вот это
https://rawgit.com/Quuxplusone/draft/gh-pages/d1144-object-relocation.html
источник

Ct

Casual tears in rust_offtopic
Constantine Drozdov
Зависит от того, насколько тупой оптимизатор, он имеет право не нулить
Получается мув не такой уж и деструктивный и за ним приходится  "подчищать" оптимизатору
источник

RP

Roman Proskuryakov in rust_offtopic
Constantine Drozdov
любишь кидаться кирпичами? прочитай внимательно  вот это
https://rawgit.com/Quuxplusone/draft/gh-pages/d1144-object-relocation.html
Draft Proposal. уже приняли и реализовали?
источник

RP

Roman Proskuryakov in rust_offtopic
будет в С++31?
источник

Ct

Casual tears in rust_offtopic
Т-34 85
вот тут написано, как заставить компилятор определить поведение при разыменование 0
Оно ничего не определяет. Просто "предполагает".
источник

SP

Stanislav Popov in rust_offtopic
ох какие же растеры бездарные. у меня передоз крестов

жил был раст оффтопик. сидели с хиро обсуждали поечку, идрис, внимали мудрости доги, кая.
@
СФИНАЕ РВАЛУЕ МУВ ДЕРЕФЕРЕНС ЛУПХОЛ УБ УБ КНИГИ СТАТЬИ СТАНДАРТЫ
источник

Т8

Т-34 85 in rust_offtopic
Casual tears
Оно ничего не определяет. Просто "предполагает".
ты точно внимательно читал? Там написано, что если хочешь всегдп кидать ошибку при дереференсе 0, юзай -fno-delete-null-pointer-checks
источник

RP

Roman Proskuryakov in rust_offtopic
Constantine Drozdov
любишь кидаться кирпичами? прочитай внимательно  вот это
https://rawgit.com/Quuxplusone/draft/gh-pages/d1144-object-relocation.html
Reference implementation of relocate_at and uninitialized_relocate

template<class T>
T *relocate_at(T *source, T *dest)
{
   if constexpr (std::is_trivially_relocatable_v<T>) {
       std::memmove(dest, source, sizeof(T));
       return std::launder(dest);
   } else {
       T *result = ::new (dest) (std::move(*source));
       source->~T();
       return result;
   }
}


лол. так где там про деструктивный мув? :D
источник

RP

Roman Proskuryakov in rust_offtopic
подсказка: source->~T();
источник