2014-07-01 13 views
5

Sto solo scrivendo una piccola applicazione in cui ho funzione che assomiglia a:QFileDialog memory leak?

QString askForDir() 
{ 
    return QFileDialog::getExistingDirectory(this, "Choose directory", QString("")); 
} 

Poiché ho aggiunto questa funzione ho detto che l'allocazione della memoria è diventato molto strano dopo l'utilizzo di questa funzione (askForDir()) .
Io uso X Strumenti OS applicazione per il debug deve quindi ecco che cosa ho:
Snapshot Peaks sono i momenti in cui funziona askForDir() funzione, voglio dire la costruzione di dir-albero.
Tra questi picchi ci sono spazi in cui non è successo nulla, intendo app che non fa nulla, solo in attesa di altre azioni da parte dell'utente.
Come potete vedere, l'allocazione della memoria è in aumento. Se si desidera che i numeri:

at 30sec - 91 Mb 
at 50sec - 113 Mb 
at 1m15sec - 135 Mb 


Ogni volta che cresce a 22 Mb

Ho cercato di esplorarla e cambiato askForDir() funzione smth come questo:

QString askForDir() 
{ 
    return "/Users/username/Desktop"; 
} 

Tutto quello che parlavo sopra è scomparso. Quindi, ho concluso che il problema è in QFileDialog.


Ecco quello che sto usando:

  • OS X 10.9.4
  • Xcode 5.1.1, Carbon
  • Qt 4.8.6

Qualcun altro ha lo stesso "problema"?

+0

Qt 4.8. Cosa? Usando carbonio o cacao? Con questi problemi devi essere molto specifico. –

+0

@ KubaOber, 4.8.6, Carbonio – tema

+0

Suggerisco di ricompilare qt per il cacao e riprovare. Se ciò dimostra ancora questo comportamento, allora è un bug e dovrai presentare una segnalazione di errore. –

risposta

4

Sembra che lo capisca.
Questa non è una perdita, né un bug. Se apri il blocco note su Windows XP, l'utilizzo della memoria è di 4 MB. Fai clic su file-> apri e l'utilizzo della memoria aumenta fino a 9mb. Chiudi la finestra di dialogo e puoi vedere che l'utilizzo della memoria non diminuisce (o solo un po 'intorno a 8,9 Mb). Windows ovviamente sta memorizzando nella cache/creando cose sulla nostra schiena (il caching ad esempio). -> Questo è per l'uso nativo.


Per il non nativo, è lo stesso. La prima volta che si apre una libreria QF QFileDialog memorizza nella cache alcune icone per un utilizzo successivo. Questo è a livello di applicazione. Questo renderà la navigazione nel file filtrato, così come in seguito se aprirai di nuovo la finestra molto più velocemente. Non è una perdita, quando l'app è chiusa tutto viene rilasciato.


Sembra che la stessa cosa succeda ovunque, quindi, penso, la domanda è fuori interesse ora.