bonjour,
j'essaie de développer une classe sous matlab qui s'alloue une ressource lors de l'appel de constructeur et qui doit libérer cette ressource lors de la destruction d'une instance.
J'ai essayé en implémentant la fonction delete(), mais la fonction ne s'exécute que lorsque je fais un delete(obj) explicitement, et pas quand je fais un clear.
Voici mes deux bouts de code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
% destest.m
% le test à lancer
function destest
    disp('----------------------------')
    do_test(true);
    do_test(false); % lors de cet appel la fonction delete n'est pas appelée
end
 
 
function do_test(callDelete)
    disp ('Debut test')
    monDestr = destr();
    if callDelete
        delete(monDestr)
    end
    disp ('Fin test')
end
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
% destr.m
%petite classe avec un constructeur et un delete
classdef destr
    methods
        function obj = destr(obj)
            disp '-->Creation'
        end
        function delete(obj) 
            disp '-->Destruction'
        end
    end
end