Having read https://fr.mathworks.com/help/matlab/ref/lib.pointer.plus.html, I am doing some tests with pointer arithmetic.
First script:
clearclcp = libpointer;setdatatype(p, 'int32Ptr');p.Value = [0 0 0 0 0 0];p2 = p + 3;p2.Value(1) = 2;disp(['p = ', mat2str(p.Value)]);disp(['p2 = ', mat2str(p2.Value)]);
Second script:
clearclcp = libpointer;setdatatype(p, 'int32Ptr');p.Value = [0 0 0 0 0 0];p2 = p + 3;p.Value(1) = 1;disp(['p = ', mat2str(p.Value)]);disp(['p2 = ', mat2str(p2.Value)]);
The first script seems to always produce the (expected) output:
p = [0 0 0 2 0 0]p2 = [2 0 0]
The second one, however, doesn't always produce the (expected) output which is
p = [1 0 0 0 0 0]p2 = [0 0 0]
Sometimes, p2.Value will have what seems garbage values in it, as shown here:
p = [1 0 0 0 0 0]p2 = [0 256035536 0]
The random results of script 2 make me suspect script 1 might not be reliable as well…
Is there something wrong in my scripts?
Best Answer