Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Un canvas è un oggetto a cui è legato un array di pixel. La risorsa è responsabile del legame di questo array di pixel (vedere bool CCanvas::Create())
È una cattiva pratica cancellare e ricreare una tela in continuazione.
È una buona pratica creare una tela quando è necessaria e cancellarla quando non è più necessaria, ad esempio alla fine del programma.
Una volta creato un oggetto canvas, è possibile ripulirlo, sovrascrivere l'array di pixel a ogni fotogramma, ridimensionare il canvas e spostarlo dove si vuole.
Grazie, è diventato un po' più chiaro, ma non tutto. Ho capito bene che se dopo aver creato un oggetto canvas, cancello semplicemente l'oggetto dal grafico usando ObjectDelete(), allora la matrice di pixel legata a questo oggetto rimane intatta e... Quando creo nuovamente un nuovo oggetto canvas con un nome diverso, viene creato un nuovo array di pixel in memoria e quindi, teoricamente, è possibile riempire l'intera memoria?
Oppure il vecchio array di pixel viene semplicemente rilegato all'ultimo oggetto canvas creato ogni volta (perché è solo con esso che tutte le funzioni dell'istanza utilizzata della classe canvas iniziano a funzionare)?
Grazie, è diventato un po' più chiaro, ma non tutto. Ho capito bene che se dopo aver creato un oggetto canvas, cancello semplicemente l'oggetto dal grafico usando ObjectDelete(), l'array di pixel legato a questo oggetto rimane intatto e.... Quando creo di nuovo un nuovo oggetto canvas con un nome diverso, viene creato un nuovo array di pixel in memoria e quindi, teoricamente, è possibile riempire tutta la memoria?
Ovviamente le risorse senza proprietario si moltiplicheranno.
Oppure il vecchio array di pixel viene semplicemente rilegato all'ultimo oggetto kanvas creato ogni volta (perché è solo con esso che tutte le funzioni dell'istanza utilizzata della classe kanvas iniziano a funzionare).
La tua immaginazione è superba. Ti invidio. Non avrei mai pensato a una cosa del genere. :))
Comunque, se salvate il nome di una risorsa senza proprietario, potete rilegarla a un nuovo oggetto bitmap. Ma questo viene dal campo della schizofrenia.
Tuttavia, se si salva il nome di una risorsa priva di proprietario, è possibile reinderizzarla a un nuovo oggetto bitmap. Ma questo viene dal campo della schizofrenia.
Mi rimangio tutto. Penso di aver trovato un caso in cui questo potrebbe essere utile.
Grazie, volevo solo capire cosa succede in memoria se si usa ObjectDelete () invece di Destroy (). E mi sono reso conto che in questo caso le risorse grafiche (array di pixel senza proprietario e quant'altro) saranno moltiplicate se ogni volta viene generato un nuovo nome per un nuovo oggetto canvas.
E se uso ObjectDelete(), ma poi creo un oggetto canvas con lo stesso nome, l'array di pixel sarà vecchio o ancora nuovo?
p.s. le domande sono probabilmente stupide, ma mi servono per capire il meccanismo del canvas
.
Grazie, volevo solo capire cosa succede in memoria se si usa ObjectDelete () invece di Destroy (). E mi sono reso conto che le risorse grafiche (array di pixel senza proprietario e altro) si moltiplicano se ogni volta viene generato un nuovo nome per un nuovo oggetto canvas.
È facile da controllare scrivendo un semplice script.
Può dirmi come fare?
Può dirmi come?
come questo:
e guardate il commento:
Dopo aver eseguito questo script, non dimenticate di ricaricare il terminale per liberare memoria per le risorse orfane.
come questo:
e guardate il commento:
Dopo aver eseguito questo script, non dimenticate di ricaricare il terminale per liberare memoria per le risorse orfane.
Grazie mille per l'aiuto! Non ho mai lavorato con la memoria in questo modo, lo proverò.
Grazie per il suggerimento che le risorse orfane vengono cancellate quando si ricarica il terminale! Molte di queste cose non sono ancora ovvie per me.
p.s. Tutto in questo esempio è perfetto! C'è qualcosa da guardare, qualcosa su cui riflettere e un'opportunità per sperimentare... Il codice è breve.
Non è necessario. Nel distruttore della tela viene eseguito automaticamente:
~iCanvas() { Destroy(); ChartRedraw();};