undefined-behavior

Das unvorhersehbare Ergebnis des Kompilierens oder Ausführens eines Programms, das Regeln der Sprache bricht, müssen weder Compiler, Interpreter noch Runtime-System erzwingen.
3
Antworten

Konvertieren Sie ein uint32_t in ein int32_t, ohne dass das Risiko eines Überlaufs oder einer übermäßigen Komplexität besteht

Wie kann ich ein uint32_t schnell in ein int32_t mit dem Wrapping in C ++ konvertieren? Einige Versuche: %Vor%     
18.04.2016, 21:16
3
Antworten

Gibt ein nicht definiertes strukturdefiniertes undefiniertes Verhalten zurück?

Ich habe den folgenden Code (Include-Wächter aus Gründen der Einfachheit weggelassen): = foo.hpp = %Vor% = main.cpp = %Vor% = foo_generator.hpp = %Vor% = foo_generator.cpp = %Vor% Dieser Code, so wie er aussieht, i...
30.11.2010, 10:30
3
Antworten

Komma-Operator und void-Ausdruck

Ich stieß auf dieses Code-Snippet 1 %Vor% 1: Dies ist kein reales Beispiel. Meine Frage lautet " Ist das Verhalten des Codeausschnitts in C und C ++ gut definiert? " Mein Take: In C ist das Verhalten gut definiert, weil 6.5.17...
23.03.2011, 05:01
3
Antworten

Ist ein Goto im Funktionsumfang von alloca gültig?

Der C-Standard verbietet einen Sprung in einen Funktionsumfang, in dem ein VLA existiert. Ein VLA und der Aufruf der alloca-Funktion sollten dasselbe Ergebnis auf niedriger Ebene haben. (Ich könnte mich irren, da ich nur ein C bin, kein Lo...
23.05.2014, 07:22
1
Antwort

Ist es okay für int ** und const int **, um einen Alias ​​zu erstellen?

Ich verstehe, dass so etwas in Ordnung ist: %Vor% Was ist damit? %Vor%     
16.07.2017, 01:08
3
Antworten

std :: shared_ptr und dlopen (), vermeiden undefiniertes Verhalten

dlopen() ist eine C-Funktion, die zum dynamischen Laden von gemeinsam genutzten Bibliotheken zur Laufzeit verwendet wird. Das Muster, falls Sie nicht vertraut sind, ist also: Rufen Sie dlopen("libpath", flag) auf, um ein void *handle...
16.03.2016, 15:57
1
Antwort

Ist es wohldefiniertes Verhalten, ein Element eines Arrays zu ändern, während ein anderes ein anderes Element desselben Arrays verändert?

Wenn ein Array vom Typ foo_t[n] und eine Menge von n Threads verwendet werden, wobei jeder der n Threads ein anderes Element des Arrays liest und ändert, mache ich müssen Änderungen des Arrays explizit synchronisiert werden, oder kann ich...
21.06.2014, 23:28
2
Antworten

Kann ein Element eines Tupels auf ein anderes verweisen?

Update: Siehe die vollständige Antwort unten. Die kurze Antwort ist nein, nicht direkt. Sie können eine indirekte Referenz mit std::reference_wrapper erstellen oder den gleichen Effekt allgemeiner mit Zeigern erzielen (aber ohne den syntakt...
26.07.2012, 18:25
1
Antwort

Dereferenz null ist nicht immer UB?

Ich habe immer gewusst, dass die Standardmandate Dereferenzierung null UB ist. Jedoch, (Link 1) sagt    p = 0; * p; ist nicht von Natur aus ein Fehler. und bietet einen Link zu (Link 2) sagt    * p ist kein Fehler, wenn p...
21.04.2017, 03:06
1
Antwort

(Where) Hat das Dokument definitionsdefiniertes Verhalten?

Implementierungsdefinierte Verhaltensweisen in C sind nicht spezifizierte Verhaltensweisen, für die jede konforme Implementierung ihre Wahl dokumentieren muss. Ich fand solche Dokumentationen leicht für gcc hier oder Microsoft C hier , abe...
31.03.2016, 13:36