Bedenken Sie, dass mein System Speicher hat, aber es ist an verschiedenen Stellen verstreut (fragmentiert). Es gibt keine vier zusammenhängenden Speicherplätze, die frei sind. In diesem Szenario, was passiert, wenn ich ein Zeichen-Array der Größe 10 in der C-Sprache deklariere?Array in einem System mit eingeschränktem Speicher
Antwort
Wenn „mein System hat Gedächtnis, aber es ist in verschiedenen Orten (fragmentiert) verstreut“ bedeutet, dass heap virtual memory fragmentiert ist, und „deklarieren ein Zeichen-Array der Größe 10“ bedeutet, dass Sie Zeichen-Array erstellen die Größe 10 in stack memory:
char str[10];
, wird Array erfolgreich erstellt werden.
Wenn "deklarieren ein Zeichenarray der Größe 10" bedeutet, daß man Speicher mit malloc() zuzuordnen (zuzuteilen in Heap):
char *str2;
str2 = (char*) malloc(10 * sizeof(char));
, dann malloc() wird NULL zurückgeben.
Wenn alle Ihre Speicher mit dem Stapel wie diese fragmentiert ist, können Sie entweder ein Compiler (oder Runtime-System), die nicht zusammenhängende Stapel-in denen unterstützt Fall es Macht auch intelligent genug, um zu unterstützen, nicht zusammenhängende Arrays - oder im Grunde alles, was Sie tun (wie das Aufrufen von Unterprogrammen), führt zu einem Stapelüberlauf und zum Absturz Ihres Programms.
Okay. Vielen Dank für Ihre Antwort. Bei einem fragmentierten Stack scheint also ein Compiler, der nicht zusammenhängende Stacks unterstützt, das Problem zu lösen. Unterstützt GCC nicht zusammenhängenden Stapel? Können Sie mir einen guten Compiler-Typ mitteilen, der nicht zusammenhängende Stapel unterstützt? –
- 1. Generische Klasse mit eingeschränktem Typparameter
- 2. Array: Speicher-Array in Array
- 3. Speicher Struktur mit einem Array von Zeigern in eine Datei
- 4. Speicher-Stream mit 2d-Array
- 5. Testen der iPhone-App mit eingeschränktem Netzwerkzugriff
- 6. Linux: Buddy System freier Speicher
- 7. Speicher von Objekten in einem Array von einem zweiten Objekt
- 8. Speicher von Werten in einem Array von Textbox in Javascript
- 9. Wie man ein Formular mit eingeschränktem Zugriff in JMeter eingibt
- 10. 301 Redirect mit eingeschränktem Zugriff auf die Website
- 11. Wie SMS mit AT auf einem eingebetteten System mit begrenztem Speicher lesen?
- 12. Swift Speicher Wörterbuch in Array
- 13. Zeiger auf ein 'Array' in Rot/System
- 14. System nicht genügend Speicher Ausnahme große TXT-Datei in ein Array
- 15. X509Certificate2 von Speicher mit einem privaten Schlüssel
- 16. Array in Array: Wie Array-Daten in einem Array
- 17. Numpy Array Speicher Ausgabe
- 18. Mysql Byte-Array-Speicher
- 19. Magento Kernfunktion in Remote-System arbeitet in einem anderen System
- 20. 2-Dimensional-Array-Speicher
- 21. Wird ein char-Array in Ordnung in einem Little-Endian oder Big-Endian-System unterscheidet
- 22. Datum Umgang in einem "Echtzeit" -System
- 23. Reverse-Zeichen-Array ohne zusätzlichen Speicher mit
- 24. PHP Speicher Entschärfen Array mit Objekten
- 25. Entspricht der von einem Array von Ints verwendete Speicher einem Array von Structs mit nur einem int?
- 26. Laravel Datei Array-Speicher
- 27. Swift-Protokoll mit eingeschränktem zugeordneten Typfehler "Typ ist nicht konvertierbar"
- 28. Login Zugriff über VBA-Makro auf Website mit eingeschränktem Quellcode
- 29. Multi-Array in einem Array mit foreach
- 30. Speicher ein Array von Objekten In Wolkenjungen
Okay. Danke für deine Antwort! –