On Sunday, 10 August 2014 at 15:37:41 UTC, seany wrote:
On Sunday, 10 August 2014 at 15:34:30 UTC, ketmar via Digitalmars-d-learn wrote:

from D side -- yes. just don't store passed pointer on C side, 'cause
it can be changed on array resize.

Excellent,

So if I have

int [] array;
void * ptr_to_array = &array;

Don't do that. `&array` is not the same as `array.ptr`. Use
`array.ptr`. `&array` would be a pointer to the local variable
`array`.

/* populate array here */

C_Function(ptr_to_array);

/* repopulate array here, the pointer itself may change, but the variable ptr_to_array will be updated accordingly */


C_Function(ptr_to_array);

I am okey?

I'm not sure if you got that right: ptr_to_array will not be
updated automatically. You have to do that yourself.

Also, if C_Function has only one parameter which is a pointer,
make sure the array has the proper length, or that is has a
proper terminator element (char* arguments must usually be
zero-terminated).

Reply via email to