correct use of pointer arithmetic with lib.pointer
Mostrar comentarios más antiguos
Having read https://fr.mathworks.com/help/matlab/ref/lib.pointer.plus.html, I am doing some tests with pointer arithmetic.
First script:
clear
clc
p = 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:
clear
clc
p = 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?
Respuesta aceptada
Más respuestas (0)
Categorías
Más información sobre Call C from MATLAB en Centro de ayuda y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!