Ich lerne Instrumente, also habe ich eine einfache App erstellt, mit der der Benutzer eine Anzahl von Megabyte (MB) eingeben kann. Und ich verwende das Tool "Zuweisungen" in Instruments, um sicherzustellen, dass diese genaue Datenmenge zugewiesen wird. Ich sehe jedoch immer mehr Speicher in den Instrumenten als ich erwarte.Zuweisung bestimmter Speichermenge in Swift - iOS
Ich habe die folgende
func allocateMemoryOfSize(numberOfBytes: Int) {
var bytesArray = [Int8]()
for i in 0 ..< numberOfBytes {
bytesArray.append(Int8(i % 7))
}
}
ich mit vielen Fragen, und ich fand eine Alternative geprüft:
func allocateMemoryOfSize(numberOfBytes: Int) {
var imageData = UnsafeMutablePointer<Int8>.alloc(numberOfBytes)}
Aber ich habe noch mehr Speicher zugewiesen bekommen. Hier ist die restults in Instruments, wenn ich 10 MBs zuteilen:
Vor der allocateMemoryOfSize Funktion ausgeführt wird:
Während der Lauf der Funktion: 44,96 MB verwendet
Nach dem Laufen der Funktion: zurück zu nur 20,58 MB
Also die Funktion allocat es ist ungefähr 22 MBs nicht 10 wie gewünscht. Was mache ich falsch? oder ist das extra Speicherverwaltung Zeug?
Vielen Dank, John! Ich habe nur ein paar Kommentare: 1- es funktionierte, als ich die for-Schleife löschte, als ich 10MBs eingab, es gab genau 10 MB zu. Mit der for-Schleife wurden ungefähr 15MBs zugewiesen. Wahrscheinlich hat die for-Schleife auch etwas Speicher benötigt. Also, ich schlage vor, Sie entfernen die for-Schleife aus Ihrer Antwort. 2- Ich verstehe Ihre Erklärung für die Array-Zuweisung, aber warum hat der unsichere veränderbare Array-Aufruf mehr Speicher zugewiesen? Danke vielmals! – CSawy
Ich denke, dass for-Schleife die Zuordnung nicht beeinflusst. Ich habe meine Antwort mit einer Erläuterung der Zuordnungszusammenfassung aktualisiert. –