Sto imparando gli strumenti quindi ho creato una semplice app che consente all'utente di inserire un numero di Mega Byte (MB) da allocare. E io uso lo strumento "Allocazioni" in Strumenti per assicurarmi che questa quantità esatta di dati sia allocata. Tuttavia, vedo sempre più memoria allocata in Strumenti di quanto mi aspetti.allocare una quantità specifica di memoria in swift - iOS
Ho fatto la seguente
func allocateMemoryOfSize(numberOfBytes: Int) {
var bytesArray = [Int8]()
for i in 0 ..< numberOfBytes {
bytesArray.append(Int8(i % 7))
}
}
ho controllato molte domande e ho trovato un'alternativa utilizzando:
func allocateMemoryOfSize(numberOfBytes: Int) {
var imageData = UnsafeMutablePointer<Int8>.alloc(numberOfBytes)}
Ma ho ancora più memoria allocata. Ecco le restults degli strumenti quando ho stanziare 10 MB:
Prima di eseguire la funzione allocateMemoryOfSize:
Durante lo svolgimento della funzione di: 44.96 MB utilizzati
Dopo l'esecuzione della funzione: di nuovo a soli 20,58 MB
Quindi, la funzione allocat es circa 22 MB non 10 come desiderato. Che cosa sto facendo di sbagliato? o questa roba di gestione della memoria extra?
Grazie mille, John! Ho solo un paio di commenti: 1- ha funzionato quando ho rimosso il ciclo for quando ho inserito 10 MB, allocati esattamente 10 MB. Con il ciclo for, ha allocato circa 15 MB. Probabilmente anche il ciclo for aveva bisogno di memoria. Quindi, ti suggerisco di rimuovere il ciclo for dalla tua risposta. 2- Capisco la tua spiegazione dell'allocazione dell'array, ma perché la chiamata di array mutabile non sicura ha allocato più memoria? Molte grazie! – CSawy
Penso che il ciclo non influenzi l'allocazione. Ho aggiornato la mia risposta con alcune spiegazioni sul riepilogo dell'assegnazione. –