Ist es legal, baumelnde Zeiger zu vergleichen? int *p, *q; { int a; p = &a; } { int b; q = &b; } std::cout << (p == q) << '\n'; Beachten Sie, wie beide pund qauf Objekte zeigen, die bereits verschwunden sind. Ist das legal?
Ist es legal, baumelnde Zeiger zu vergleichen? int *p, *q; { int a; p = &a; } { int b; q = &b; } std::cout << (p == q) << '\n'; Beachten Sie, wie beide pund qauf Objekte zeigen, die bereits verschwunden sind. Ist das legal?
Ich verwende einen Vektor von Zeigern auf Objekte. Diese Objekte werden von einer Basisklasse abgeleitet und dynamisch zugeordnet und gespeichert. Zum Beispiel habe ich so etwas wie: vector<Enemy*> Enemies; und ich werde von der Enemy-Klasse ableiten und dann dynamisch Speicher für die...
Ich löse eine binäre Exploitation-Herausforderung auf picoCTF und bin auf diesen Code gestoßen: ((void (*)())buf)(); Wo bufist ein Zeichenarray? Ich habe die Herausforderung gelöst, kann aber nicht verstehen, was genau es tut. Ich habe mir diesen Thread angesehen, konnte ihn aber nicht erkennen....
Ich habe verschiedene Beiträge zu Stack Overflow RE gelesen : Der dereferenzierende typgesteuerte Zeigerfehler. Nach meinem Verständnis ist der Fehler im Wesentlichen die Compiler-Warnung vor der Gefahr des Zugriffs auf ein Objekt über einen Zeiger eines anderen Typs (obwohl eine Ausnahme gemacht...
AFAIK, obwohl wir kein statisches Speicherarray der Größe 0 erstellen können, können wir dies mit dynamischen tun: int a[0]{}; // Compile-time error int* p = new int[0]; // Is well-defined Wie ich gelesen habe, pverhält es sich wie ein One-Past-End-Element. Ich kann die Adresse drucken, auf die...
In Kapitel 5 von K & R (The C Programming Language 2nd Edition) habe ich Folgendes gelesen: Erstens können Zeiger unter bestimmten Umständen verglichen werden. Wenn pund qPunkt an den Mitgliedern des gleichen Array, dann Beziehungen wie ==, !=, <, >=etc. richtig funktionieren. Dies...
Ich habe kürzlich eine Frage zum undefinierten Verhalten p < qin C beantwortet, wenn pund qZeiger auf verschiedene Objekte / Arrays sind. Das brachte mich zum Nachdenken: C ++ hat <in diesem Fall das gleiche (undefinierte) Verhalten , bietet aber auch die Standardbibliotheksvorlage,...
Ich bin verwirrt über die Bedeutung von void *function(). Ist es ein Zeiger auf eine Funktion oder eine Funktion, die zurückkehrt void*? Ich habe es immer für Datenstrukturen als rekursive Funktion verwendet, die einen Zeiger zurückgibt, aber als ich einen Code in multithreading ( pthread) sah, gab...
Betrachten Sie die folgende Struktur: struct s { int a, b; }; Typischerweise hat 1 diese Struktur die Größe 8 und die Ausrichtung 4. Was ist, wenn wir zwei struct sObjekte erstellen (genauer gesagt, wir schreiben zwei solche Objekte in den zugewiesenen Speicher), wobei das zweite Objekt das erste...
Ich habe diesen Code auf GitHub gefunden, ihn aber nicht ganz verstanden: #define lambda(ret_type, _body) ({ ret_type _ _body _; }) Dann: int (*max)(int, int) = lambda(int, (int x, int y) { return x > y ? x : y; }); int max_value = max(1, 2); // max_value is 2 Was machen die Unterstriche im...
Ist das gültiges C ++? int main() { constexpr auto sz = __func__ - __func__; return sz; } GCC und MSVC denken, dass es in Ordnung ist, Clang denkt, dass es nicht: Compiler Explorer . Alle Compiler sind sich einig, dass dies in Ordnung ist: Compiler Explorer . int main() { constexpr auto p...
Ich bin nicht sehr daran gewöhnt weak_ptrund stehe vor einer ziemlich verwirrenden Situation. Ich verwende Intel XE 2019 Composer Update 5 ( Paket 2019.5.281 ) in Kombination mit Visual Studio 2019 ver. 16.2.5 . Ich kompiliere in 64-Bit. Ich benutze das Standard C ++ 17 . Hier ist der Code für...
Nach dem Update auf Swift 5.2 / Xcode 11.4 wurde eine Warnung zu folgendem Code angezeigt: extension Data { init<T>(from value: T) { var value = value let pointer = UnsafeBufferPointer(start: &value, count: 1) self.init(buffer: pointer) } func to<T>(type: T.Type) -> T { return...
Hier habe ich einen Zeiger ptrauf ein Array arrvon 4 ganzen Zahlen. ptrzeigt auf das gesamte Array. ptr[0]oder *ptrzeigt auf das erste Element des Arrays. Wenn Sie also 1 hinzufügen, erhalten Sie ptr[0]die Adresse des zweiten Elements des Arrays. Ich kann nicht verstehen, warum using...
Kann int (*)[]ein unvollständiger Typ sein? C 2018 6.2.5 1 sagt: An verschiedenen Stellen innerhalb einer Übersetzungseinheit kann ein Objekttyp unvollständig (ohne ausreichende Informationen zur Bestimmung der Größe von Objekten dieses Typs) oder vollständig (mit ausreichenden Informationen) sein....
Ich möchte ein mehrdimensionales C-String-Array definieren, das durch mehrere String-Literale initialisiert wird. In C würde ich folgendes tun: #include <stdio.h> const char *strArr[2][1] = { {"foo"}, {""}}; int main(void) { printf("%p\t%p\n", strArr[0][0], strArr[1][0]); return...
In Go's runtime/proc.gowird unten ein Code gezeigt: // funcPC gibt den Eingabe-PC der Funktion f zurück. // Es wird davon ausgegangen, dass f ein Funktionswert ist. Ansonsten ist das Verhalten undefiniert. // VORSICHT: In Programmen mit Plugins kann funcPC unterschiedliche // Werte für...
ich habe var H: array of THandle; Dann erstelle ich in einer Schleife mehrere Threads, ordne den Elementen von H Thread-Handles zu und warte darauf. Das Übergeben von @H [0] als 2. Parameter an WFMO unten funktioniert. WaitForMultipleObjects(Length(H), @H[0], True, INFINITE) <-- Works Das...
Ich versuche, einen Wrapper bereitzustellen, um std::invokeden Funktionstyp auch dann abzuleiten, wenn die Funktion überlastet ist. (Ich habe gestern eine verwandte Frage für die Variadic- und Methodenzeigerversion gestellt). Wenn die Funktion ein Argument hat, funktioniert dieser Code (C ++ 17)...
Ich komme aus C ++ und finde ein ganz anderes Verhalten zwischen Zeigern in C ++ und C #. Ich finde überraschenderweise, dass dieser Code kompiliert wird ... und sogar ... funktioniert perfekt. class C { private readonly int x = 0; unsafe public void Edit() { fixed (int* p = &x) { *p = x + 1; }...