Size: a a a

2020 August 05

AZ

Alexander Zaitsev in supapro.cxx
std::slavik
у яндексов же задачи которые в принципе решаются за хоть какие-то деньги очень сложно
у него не все такие задачи
источник

AZ

Alexander Zaitsev in supapro.cxx
какие-то - возможно. но крудошлёпят там немало
источник

s

std::slavik in supapro.cxx
ну сейчас он уже как раз в стадии оптимизации того что сделали умные дядьки раньше
источник

ПК

Побитый Кирпич... in supapro.cxx
std::slavik
нужна просто масштабируемая система
С++ даст возможность меньше железок покупать
источник

SE

Stanislav Ershov in supapro.cxx
Побитый Кирпич
С++ даст возможность меньше железок покупать
зато больше железок для сборки))
источник

AZ

Alexander Zaitsev in supapro.cxx
Stanislav Ershov
зато больше железок для сборки))
и тут на сцену выходит яндекс.бар!
источник

АД

А Му Де in supapro.cxx

#include <iostream>
#include <array>

const int arr_size = 10;
std::array<int, arr_size> array;

int main() {
for(int i = 0; i <= 100; i++) {
array[i] += i;
std::cout << array[i] << std::endl;
}
std::cout << array.size()<< std::endl;
}

Собираю этот код g++ 8. Без флагов оптимизации он честно выводит числа от 0 до 100 и говорит что размер 10. С std 17 и О2 жалуется на уб, но компилит, доходит почти до 1000 и ложиться в сигментейшон фолт. Как это работает? Почему оно так себя ведёт?
источник

TS

Till Schneider in supapro.cxx
А Му Де

#include <iostream>
#include <array>

const int arr_size = 10;
std::array<int, arr_size> array;

int main() {
for(int i = 0; i <= 100; i++) {
array[i] += i;
std::cout << array[i] << std::endl;
}
std::cout << array.size()<< std::endl;
}

Собираю этот код g++ 8. Без флагов оптимизации он честно выводит числа от 0 до 100 и говорит что размер 10. С std 17 и О2 жалуется на уб, но компилит, доходит почти до 1000 и ложиться в сигментейшон фолт. Как это работает? Почему оно так себя ведёт?
источник

D

Dmitriy in supapro.cxx
Бомбезный стикер. Спасибо, утащил
источник

Е

Егор in supapro.cxx
А Му Де

#include <iostream>
#include <array>

const int arr_size = 10;
std::array<int, arr_size> array;

int main() {
for(int i = 0; i <= 100; i++) {
array[i] += i;
std::cout << array[i] << std::endl;
}
std::cout << array.size()<< std::endl;
}

Собираю этот код g++ 8. Без флагов оптимизации он честно выводит числа от 0 до 100 и говорит что размер 10. С std 17 и О2 жалуется на уб, но компилит, доходит почти до 1000 и ложиться в сигментейшон фолт. Как это работает? Почему оно так себя ведёт?
note that default initialization may result in indeterminate values for non-class T
https://en.cppreference.com/w/cpp/container/array
источник

TS

Till Schneider in supapro.cxx
Егор
note that default initialization may result in indeterminate values for non-class T
https://en.cppreference.com/w/cpp/container/array
тебя это больше всего смущает, а не выход за границы?)))
источник

Е

Егор in supapro.cxx
Till Schneider
тебя это больше всего смущает, а не выход за границы?)))
я незаметил
источник

АД

А Му Де in supapro.cxx
Причём он так вообще со всеми контейнерами работает. С вектором и флагами выводит до 100 и размер 0. С сишными массивами тоже примерно такое же.
источник

TS

Till Schneider in supapro.cxx
А Му Де
Причём он так вообще со всеми контейнерами работает. С вектором и флагами выводит до 100 и размер 0. С сишными массивами тоже примерно такое же.
нет, не работает
источник

D

Danya in supapro.cxx
А Му Де

#include <iostream>
#include <array>

const int arr_size = 10;
std::array<int, arr_size> array;

int main() {
for(int i = 0; i <= 100; i++) {
array[i] += i;
std::cout << array[i] << std::endl;
}
std::cout << array.size()<< std::endl;
}

Собираю этот код g++ 8. Без флагов оптимизации он честно выводит числа от 0 до 100 и говорит что размер 10. С std 17 и О2 жалуется на уб, но компилит, доходит почти до 1000 и ложиться в сигментейшон фолт. Как это работает? Почему оно так себя ведёт?
То есть ты триггеришь UB, а потом спрашиваешь почему с одними флагами оно работает так как ты ожидал, а с другими нет?
источник

АД

А Му Де in supapro.cxx
Danya
То есть ты триггеришь UB, а потом спрашиваешь почему с одними флагами оно работает так как ты ожидал, а с другими нет?
Я хотел просто сигментейшон фолт вызвать. А вдруг оказалось что это уб :о
источник

D

Danya in supapro.cxx
А Му Де
Я хотел просто сигментейшон фолт вызвать. А вдруг оказалось что это уб :о
Покажи что такое segmentation fault в стандарте С++
там есть ему определение?
источник

PK

Pavel Kazakov in supapro.cxx
А Му Де
Я хотел просто сигментейшон фолт вызвать. А вдруг оказалось что это уб :о
Первое -- частое следствие второго, но никаких гарантий нет. Уб просто не надо делать.
источник

ПК

Побитый Кирпич... in supapro.cxx
А Му Де
Я хотел просто сигментейшон фолт вызвать. А вдруг оказалось что это уб :о
raise(SIGSEGV);
источник

D

Danya in supapro.cxx
Danya
Покажи что такое segmentation fault в стандарте С++
там есть ему определение?
Я вот вангую, что нет
Скорее всего там даже упоминания нет
источник