Size: a a a

2021 March 14

ПК

Побитый Кирпич... in pro.cxx
Докажи
источник

LA

Liber Azerate in pro.cxx
Vlad Serebrennikov
арифметика указателей не разрешает «ходить» по частям многомерного массива

если очень хочется, то можно считать, что оно работает так же, как работало создание объектов через malloc до 20 стандарта, но не более того
Кстати, я не уверен, что не разрешает. Мне кажется, данный пункт несколько проясняет:
http://eel.is/c++draft/dcl.array#9
источник

D

Dmitriy in pro.cxx
Побитый Кирпич
Кстати, а разыменование nullptr это UB?
С козырей зашел?))
источник

IZ

Ilia Zviagin in pro.cxx
Не надо туда ходить, мы уже выясняли, что в стандарте нет четкого запрета на это
источник

SS

Sergey Skvortsov in pro.cxx
Liber Azerate
Кстати, я не уверен, что не разрешает. Мне кажется, данный пункт несколько проясняет:
http://eel.is/c++draft/dcl.array#9
Тут ничего нет про представление многомерного через одномерный, да и это ненормативная note
Просто прояснение того, как нормальный доступ к многомерному массиву проходит
источник

IZ

Ilia Zviagin in pro.cxx
Liber Azerate
Кстати, я не уверен, что не разрешает. Мне кажется, данный пункт несколько проясняет:
http://eel.is/c++draft/dcl.array#9
Разрешает.
Без этого вообще бы ничего не работало
источник

LA

Liber Azerate in pro.cxx
Ilia Zviagin
Разрешает.
Без этого вообще бы ничего не работало
Пока что основное утверждение, что не разрешает. И это сложно оспорить :)
источник

IA

Ilia Abernikhin in pro.cxx
прилетит сегфолт, с пометкой что пытаешься ращименовать не то
источник

IA

Ilia Abernikhin in pro.cxx
Ilia Abernikhin
прилетит сегфолт, с пометкой что пытаешься ращименовать не то
terminated by signal SIGSEGV (Address boundary error)
источник

S

Stepan in pro.cxx
Andrey Glebov
если конкретно про UB, то тут: https://eel.is/c++draft/expr.add#4.3
т.е по N мы вычислить можем, а дальше UB. Индекс последнего элемента - это N - 1.
А в каких практических случаях вычисление до N включительно может быть полезно?
источник

AG

Andrey Glebov in pro.cxx
Stepan
т.е по N мы вычислить можем, а дальше UB. Индекс последнего элемента - это N - 1.
А в каких практических случаях вычисление до N включительно может быть полезно?
std::end(T (&)[N]) например
источник

SS

Sergey Skvortsov in pro.cxx
Ilia Abernikhin
прилетит сегфолт, с пометкой что пытаешься ращименовать не то
Не прилетел, чяднт?
#include <sys/mman.h>
#include <iostream>

int main() {
   int* x = (int*)mmap(nullptr, sizeof(int), PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0);
   std::cout << x << std::endl;
   std::cin >> *x;
   std::cout << *x << std::endl;
}

λ sudo ./mmap          
[sudo] password for sskvor:
0
123
123
источник

SK

Stas Koynov in pro.cxx
Stepan
т.е по N мы вычислить можем, а дальше UB. Индекс последнего элемента - это N - 1.
А в каких практических случаях вычисление до N включительно может быть полезно?
для end итератора или его аналога
источник

ПК

Побитый Кирпич... in pro.cxx
Ilia Abernikhin
прилетит сегфолт, с пометкой что пытаешься ращименовать не то
https://godbolt.org/z/dY17PY

Не прилетело
источник

S

Stepan in pro.cxx
Andrey Glebov
std::end(T (&)[N]) например
Да
источник

SK

Stas Koynov in pro.cxx
а без ммап?
источник

SK

Stas Koynov in pro.cxx
а то я могу и с нуля память в spi буфере попросить
источник

SS

Sergey Skvortsov in pro.cxx
Stas Koynov
а то я могу и с нуля память в spi буфере попросить
Ну какие аргументы, такие и контрпримеры
источник

SK

Stas Koynov in pro.cxx
ну я думаю оффтоп. мы сишники думаем что двухмерный можно обходить как одномерный и даже через указатель. Вы говорите что стандарт этого не разрешает и это УБ. все можно ставить точку!. 90% кода в мире это УБ. осталось дождаться новой версии компилятора, который оптимизирует его и просто выкинет. вот тогда наконец опенцв начент норм работать. а то тормазит ужас особенно на расбери...
источник

ПК

Побитый Кирпич... in pro.cxx
Stas Koynov
ну я думаю оффтоп. мы сишники думаем что двухмерный можно обходить как одномерный и даже через указатель. Вы говорите что стандарт этого не разрешает и это УБ. все можно ставить точку!. 90% кода в мире это УБ. осталось дождаться новой версии компилятора, который оптимизирует его и просто выкинет. вот тогда наконец опенцв начент норм работать. а то тормазит ужас особенно на расбери...
> мы сишники думаем что двухмерный можно обходить как одномерный и даже через указатель

Просто вам ничего больше и не остаётся мухахаха
источник