cv::Mat méthode de version
Je voudrais confirmer si cv::Mat::release()
méthode est similaire à free()
dans la programmation en C, c'est à dire, sa libère les données de la Matrice de la mémoire.
En particulier, je voudrais comprendre le comportement de cette méthode en ce qui concerne les fuites de mémoire et assurez-vous il n'y a pas de fuite en mai programmes.
Encapsuler le code à l'intérieur d'un while(true){//boucle} et le laisser tourner. En attendant, surveillez votre mémoire avec un gestionnaire de tâches à raison à propos de votre mémoire.
Il existe des outils spécifiques pour mesurer les fuites de mémoire et d'autres erreurs de programmation (à l'aide de variables non initialisées, etc). Jetez un oeil à «valgrind».
Il existe des outils spécifiques pour mesurer les fuites de mémoire et d'autres erreurs de programmation (à l'aide de variables non initialisées, etc). Jetez un oeil à «valgrind».
OriginalL'auteur Bryanyan | 2013-04-08
Vous devez vous connecter pour publier un commentaire.
Si le compteur de référence est égal à un, alors oui,
cv::Mat::release()
décrémentera à zéro et de libérer la structure (commefree
en C).Si le compteur de référence est supérieur à un (ie. il y a un autre objet intéressés à la structure), puis
cv::Mat::release()
sera seulement décrémenter le compteur de référence.Vous pouvez incrémenter le compteur de référence d'un
cv::Mat
structure (c'est-à-drapeau que vous êtes intéressés et que vous ne voulez pas qu'il soit libéré) en invoquant lacv::Mat::addref()
méthode.OriginalL'auteur Daniel Martín
vous n'avez pas manuellement désalloué cv::Mat objets, car il est géré automatiquement , sauf si vous avez initialisé le Tapis à partir d'un Iplimage dans ce cas, vous devez manuellement le désallouer deallocate().
veuillez vous référer à ce fil .
openCV mélange IplImage avec cv::Mat
OriginalL'auteur Yamen Ajjour
J'ai eu des fuites de mémoire à l'aide d'une structure de code qui ressemble à ceci (OpenCV avec C++):
Après 100 itérations toujours, il s'est écrasé, puis j'ai changé le code de cette:
Il a cessé de s'écraser et ne l'itération complète. Mais lors de la configuration de la refcount manuellement à 0, vous devez être vraiment sûr que vous n'avez pas besoin de l'objet. C'est probablement la raison pour quelqu'un de voter ma réponse, mais j'ai résolu mon problème en utilisant cette approche. Alors pourquoi ne devrais-je pas le partager?
est
refcount
un champ public? Je ne le trouve pas...OriginalL'auteur kiltek
Le programme suivant extrait de tests du comportement de Mat::release()
(adapté de opencv-org-répondre)
Qu'est-ce que la référence à une culture? comme
Mat imgRef = img(roi);
ce qui se passe si je puis relâchezimg
et puis essayez aussi de la libération imgRef?OriginalL'auteur koshy george