Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Uma tela é um objeto ao qual está vinculada uma matriz de pixels. O Resource é responsável por vincular essa matriz de pixels (consulte bool CCanvas::Create())
É uma má prática excluir e recriar uma tela o tempo todo.
É uma boa prática criar uma tela quando ela for necessária e excluí-la quando não for mais necessária, por exemplo, no final do programa.
Depois de criar um objeto canvass, você pode limpá-lo, substituir a matriz de pixels a cada quadro, redimensionar a tela e movê-la para onde quiser.
Obrigado, ficou um pouco mais claro, mas não tudo. Entendi corretamente que, se depois de criar um objeto de tela, eu simplesmente excluir o objeto do gráfico usando ObjectDelete(), a matriz de pixels vinculada a esse objeto permanecerá intacta e... Quando crio um novo objeto de tela com um nome diferente novamente, uma nova matriz de pixels é criada na memória e, portanto, teoricamente, é possível preencher toda a memória?
Ou a matriz de pixels antiga é simplesmente vinculada novamente ao último objeto de tela criado a cada vez (porque é e somente com ela que todas as funções da instância usada da classe de tela começam a funcionar)?
Obrigado, ficou um pouco mais claro, mas não tudo. Entendo corretamente que, se depois de criar um objeto de tela, eu simplesmente excluir o objeto do gráfico usando ObjectDelete(), a matriz de pixels vinculada a esse objeto permanecerá intocada e.... Quando crio um novo objeto de tela com um nome diferente novamente, uma nova matriz de pixels é criada na memória e, portanto, teoricamente, é possível preencher toda a memória?
É claro que os recursos sem proprietário se multiplicarão.
Ou ainda a matriz de pixels antiga é simplesmente vinculada novamente ao último objeto kanvas criado todas as vezes (porque é e somente com ela que todas as funções da instância usada da classe kanvas começam a funcionar)
Sua imaginação é excelente. Eu o invejo. Eu não teria pensado em uma coisa dessas. :))
Entretanto, se você salvar o nome de um recurso sem proprietário, poderá vinculá-lo novamente a um novo objeto de bitmap. Mas isso é do campo da esquizofrenia.
No entanto, se você salvar o nome de um recurso sem proprietário, poderá vinculá-lo novamente a um novo objeto de bitmap. Mas isso é do campo da esquizofrenia.
Retiro o que disse. Acho que encontrei um caso em que isso pode ser útil.
Obrigado, eu só queria entender o que acontece na memória se você usar ObjectDelete () em vez de Destroy (). E percebi que, nesse caso, os recursos gráficos (matrizes de pixels sem dono e qualquer outra coisa) serão multiplicados se um novo nome for gerado a cada vez para um novo objeto de tela.
E se eu usar ObjectDelete(), mas depois criar um objeto canvas com o mesmo nome, a matriz de pixels será antiga ou ainda será nova?
p.s. as perguntas provavelmente são estúpidas, mas preciso delas para entender o mecanismo do canvas
.
Obrigado, eu só queria entender o que acontece na memória se você usar ObjectDelete () em vez de Destroy (). E percebi que os recursos gráficos (matrizes de pixels sem dono e outras coisas) se multiplicarão se um novo nome for gerado para um novo objeto de tela a cada vez.
É fácil verificar isso escrevendo um script simples.
Você pode me dizer como?
Você pode me dizer como?
assim:
e veja o comentário:
!!! depois de executar esse script, não se esqueça de recarregar o terminal para liberar memória para recursos órfãos.
assim:
e veja o comentário:
!!! depois de executar esse script, não se esqueça de recarregar o terminal para liberar memória para recursos órfãos.
Muito obrigado por sua ajuda! Nunca trabalhei com a memória dessa forma antes, vou testá-la.
Obrigado pela dica de que os recursos órfãos são excluídos ao recarregar o terminal! Muitas dessas coisas ainda não são óbvias para mim.
p.s. tudo nesse exemplo é perfeito! Há algo para ver, algo para pensar e uma oportunidade para experimentar... O código é curto.
Você não precisa fazer isso. No destrutor do Canvas, ele é executado automaticamente:
~iCanvas() { Destroy(); ChartRedraw();};