Pytania otagowane jako undefined-behavior

Nieprzewidywalny wynik kompilacji lub wykonania programu, który łamie zasady języka, ani kompilator, ani interpreter, ani system wykonawczy nie muszą egzekwować. NIE UŻYWAJ tego znacznika w przypadku pytań dotyczących typu danych lub zwracanej wartości „undefined”. W takich przypadkach należy zamiast tego użyć tagu [undefined].




7
Jak działa porównywanie wskaźników w C? Czy można porównywać wskaźniki, które nie wskazują tej samej tablicy?
W K&R (The C Programming Language 2nd Edition) rozdział 5 czytam: Po pierwsze, wskaźniki mogą być porównywane w pewnych okolicznościach. Jeśli pi qpunkt do członków tej samej tablicy, stosunki wówczas jak ==, !=, <, >=, itd pracę prawidłowo. Co wydaje się sugerować, że można porównywać tylko wskaźniki wskazujące na tę …

2
Dziwne zachowanie z polami klasy podczas dodawania do std :: vector
Znalazłem bardzo dziwne zachowanie (na clang i GCC) w następującej sytuacji. Mam wektor, nodesz jednym elementem, instancją klasy Node. Następnie wywołuję funkcję, nodes[0]która dodaje nową wartość Nodedo wektora. Po dodaniu nowego węzła pola obiektu wywołującego są resetowane! Wydają się jednak wracać do normy po zakończeniu funkcji. Uważam, że jest to …

4
Kopiowanie struktur z niezainicjowanymi elementami
Czy można skopiować strukturę, której niektórzy członkowie nie są zainicjowani? Podejrzewam, że jest to zachowanie nieokreślone, ale jeśli tak, sprawia, że ​​pozostawienie niezainicjowanych członków w strukturze (nawet jeśli ci członkowie nigdy nie są bezpośrednio wykorzystywani) jest dość niebezpieczne. Zastanawiam się więc, czy jest coś w standardzie, które to pozwala. Na …


1
Dlaczego funkcja konstelacyjna pozwala na niezdefiniowane zachowanie?
W C ++ istnieje bardzo zgrabna właściwość wyrażeń stałych: ich ocena nie może mieć niezdefiniowanego zachowania ( 7.7.4.7 ): Wyrażenie e jest podstawowym stałym wyrażeniem, chyba że ocena e, zgodnie z regułami maszyny abstrakcyjnej ([intro. Wykonanie]), ocenia jedną z następujących czynności: ... operacja, która miałaby niezdefiniowane zachowanie określone w [intro] …


3
Wywołanie funkcji ze wskaźnikiem na non-const i wskaźnikiem na const argumentów o tym samym adresie
Chcę napisać funkcję, która wprowadza tablicę danych i wyprowadza inną tablicę danych za pomocą wskaźników. Zastanawiam się, co jest wynikiem zarówno jeśli srci dstwskazał na samym adresem, bo wiem, kompilator może zoptymalizować dla const. Czy jest to niezdefiniowane zachowanie? (Oznacziłem zarówno C, jak i C ++, ponieważ nie jestem pewien, …


1
Czy `string.assign (string.data (), 5)` jest dobrze zdefiniowany czy UB?
Współpracownik chciał to napisać: std::string_view strip_whitespace(std::string_view sv); std::string line = "hello "; line = strip_whitespace(line); Powiedziałem, że powrót string_viewsprawił, że poczułem niepokój a priori , a ponadto aliasing tutaj wyglądał dla mnie jak UB. Mogę z całą pewnością stwierdzić, że line = strip_whitespace(line)w tym przypadku jest to odpowiednik line = …




Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.