Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Un canevas est un objet auquel est lié un tableau de pixels. La ressource est chargée de lier ce tableau de pixels (voir bool CCanvas::Create())
Il n'est pas judicieux de supprimer et de recréer un canevas en permanence.
Il est judicieux de créer un canevas lorsque l'on en a besoin et de le supprimer lorsqu'il n'est plus nécessaire, par exemple à la fin d'un programme.
Une fois que vous avez créé un objet canevas, vous pouvez le nettoyer, écraser le tableau de pixels à chaque image, redimensionner le canevas et le déplacer où vous voulez.
Merci, c'est devenu un peu plus clair, mais pas tout. Est-ce que je comprends bien que si après avoir créé un objet canvas, je supprime simplement l'objet du graphique en utilisant ObjectDelete(), alors le tableau de pixels lié à cet objet reste intact et... Lorsque je crée un nouvel objet canvas avec un nom différent, un nouveau tableau de pixels est créé en mémoire, et donc, théoriquement, il est possible de remplir toute la mémoire ?
Ou bien l'ancien tableau de pixels est-il simplement lié à nouveau au dernier objet canvas créé à chaque fois (parce que c'est et seulement avec lui que toutes les fonctions de l'instance utilisée de la classe canvas commencent à fonctionner) ?
Merci, c'est devenu un peu plus clair, mais pas entièrement. Est-ce que je comprends bien que si après avoir créé un objet canvas, je supprime simplement l'objet du graphique en utilisant ObjectDelete(), alors le tableau de pixels lié à cet objet reste intact et.... Lorsque je crée un nouvel objet canvas avec un nom différent, un nouveau tableau de pixels est créé en mémoire, et il est donc théoriquement possible de remplir toute la mémoire ?
Bien sûr, les ressources sans propriétaire vont se multiplier.
Ou encore, l'ancien tableau de pixels est simplement lié à nouveau au dernier objet kanvas créé à chaque fois (parce que c'est et seulement avec lui que toutes les fonctions de l'instance utilisée de la classe kanvas commencent à fonctionner).
Votre imagination est superbe. Je vous envie. Je n'aurais jamais pensé à une telle chose. :))
Cependant, si vous sauvegardez le nom d'une ressource sans propriétaire, vous pouvez le relier à un nouvel objet bitmap. Mais cela relève du domaine de la schizophrénie.
Toutefois, si vous enregistrez le nom d'une ressource sans propriétaire, vous pouvez le lier à un nouvel objet bitmap. Mais cela relève du domaine de la schizophrénie.
Je retire ce que j'ai dit. Je pense avoir trouvé un cas où cela pourrait être utile.
Merci, je voulais juste comprendre ce qui se passe en mémoire si on utilise ObjectDelete () au lieu de Destroy (). Et j'ai réalisé que dans un tel cas, les ressources graphiques (tableaux de pixels sans propriétaire et autres) seront multipliées si un nouveau nom est généré à chaque fois pour un nouvel objet canvas.
Et si j'utilise ObjectDelete(), mais que jecrée ensuite un objet canvas avec le même nom, le tableau de pixels sera-t-il ancien ou toujours nouveau ?
p.s. les questions sont probablement stupides, mais j'en ai besoin pour comprendre le mécanisme du canvas
.
Merci, je voulais juste comprendre ce qui se passe en mémoire si on utilise ObjectDelete () au lieu de Destroy (). Et j'ai réalisé que les ressources graphiques (tableaux de pixels sans propriétaire et autres) vont se multiplier si un nouveau nom est généré pour un nouvel objet canvas à chaque fois.
Il est facile de le vérifier en écrivant un simple script.
Pouvez-vous m'expliquer comment faire ?
Pouvez-vous me dire comment ?
comme ceci :
et regardez le commentaire :
! !! après avoir exécuté ce script, n'oubliez pas de recharger le terminal pour libérer de la mémoire pour les ressources orphelines.
comme ceci :
et regardez le commentaire :
! !! après avoir exécuté ce script, n'oubliez pas de recharger le terminal pour libérer de la mémoire pour les ressources orphelines.
Merci beaucoup pour votre aide ! Je n'ai jamais travaillé avec la mémoire de cette manière auparavant, je vais le tester.
Merci pour l'indication que les ressources orphelines sont supprimées lors du rechargement du terminal ! Beaucoup de choses de ce genre ne sont pas encore évidentes pour moi.
p.s. : tout est parfait dans cet exemple ! Il y a quelque chose à regarder, quelque chose à penser et une occasion d'expérimenter... Le code est court.
Ce n'est pas nécessaire. Dans le destructeur du canevas, il est automatiquement exécuté :
~iCanvas() { Destroy(); ChartRedraw();};