Ich arbeite an einer Android-Anwendung, die nativen C/C++-Code verwendet und mit malloc() große Speicherzuweisungen durchführt.
Auf einem 8-GB-Android-Gerät (Android 14+) ordne ich wiederholt große Speicherblöcke (ungefähr 1 GB pro Zuweisung) mit malloc() zu.
Was ich beobachte, ist:
Ich arbeite an einer Android-Anwendung, die nativen C/C++-Code verwendet und mit malloc() große Speicherzuweisungen durchführt. Auf einem [b]8-GB-Android-Gerät[/b] (Android 14+) ordne ich wiederholt große Speicherblöcke (ungefähr [b]1 GB pro Zuweisung[/b]) mit malloc() zu. Was ich beobachte, ist: [list] [*][code]malloc()[/code] [b]gibt für jede Zuweisung einen Zeiger ungleich Null zurück[/b]
[*]Wenn ich den zugewiesenen Speicher [b]nicht initialisiere oder darauf zugreife[/b], wird die Anwendung weiter ausgeführt
[*]In diesem Fall kann die [b]zugeteilte Gesamtgröße[/b] die physische RAM-Größe des Geräts überschreiten
[*]Wenn ich [b]den Speicher mit memset()[/b] initialisiere, wird die Anwendung [b]nach einigen Iterationen beendet[/b]
[*]Der Fehler tritt [b]während memset()[/b] auf, nicht beim malloc()-Aufruf
[*]Es gibt:
Kein malloc()-Fehler
[*]Keine NULL-Rückgabe
[/list]
[*]Der Prozess wird abrupt beendet
Nach der Beendigung zeigt Logcat Meldungen an wie: [code]InputDispatcher: channel 'com.example.app/.MainActivity' ~ Channel is unrecoverably broken and will be disposed [/code] Zusätzliche Details: [list] [*]Der von malloc() zurückgegebene Zeiger erscheint gültig, bis memset() ausgeführt wird
[*]Die Anzahl erfolgreicher Zuweisungen variiert, aber nach einigen großen Zuweisungen tritt beim Zugriff auf den Speicher regelmäßig ein Fehler auf.
[*]Die App definiert eine Anwendungsunterklasse -- Weder onLowMemory() noch onTrimMemory() wird aufgerufen, bevor der Prozess beendet wird
[/list] Ich versuche zu verstehen: [list] [*]Warum erlaubt malloc() die Zuweisung von Speicher über den physischen RAM hinaus, wenn nicht darauf zugegriffen wird?
[*]Warum der Prozess wird während memset() beendet, anstatt dass malloc() nullptr?
Ich erstelle eine WPF-Anwendung für die Erstellung von Quizen usw. und einmal, als ich mit dem Aufbau begonnen habe, habe ich diesen Fehler:
1>------ Build started: Project: quiz_maker,...
Ich versuche, mithilfe von Next.js und React-Fast-Marquee ein kontinuierlich scrollendes vertikales Karussell mit zwei Spalten zu implementieren. Ich stehe jedoch vor zwei Problemen:
Der Laufrahmen...
stolperte auf ein merkwürdiges Verhalten mit org.jvnet.jaxb: jaxb-maven-plugin: 4.0.8 plugin, bezieht sich auf mehrere Ausführungen, um Klassen für mehrere WSDLs zu generieren. Jede einzelne WSDL...
parseQuery in RDFLib fängt Syntaxfehler ab, aber ich kann keine Möglichkeit finden, dass RDFLib semantische/statische Probleme (z. B. GROUP BY-Konflikte) vor der Ausführung auf einem Remote-Endpunkt...
Ich möchte an einen Prozess (A.exe) anhängen, sobald es hervorgebracht wird. Ist es mit VS machbar? Ich kenne nur den Namen des Prozesses. Eigentlich möchte ich einen Breakpoint in C# Code festlegen,...