Passing a pointer to a function (by value) changes the pointer value
Stefanos Baziotis
sdi1600105 at di.uoa.gr
Sun Apr 28 18:16:24 UTC 2019
Hello everyone,
I have a function:
void foo(T *t) { ... }
void bar(...) {
T *t = ...;
foo(t);
}
In the debugger, before calling 'foo', 't' had a value (an
address) let's say 10. Stepping
into 'foo', the 't' that 'foo' got, which is supposed to have the
same value that the 't' in 'bar' had, actually had a completely
different value. That caused a very bad bug...
I thought that D behaves in that kind of situations as C/C++, and
so I thought 'foo' should get the same value but that was not
true. Needless to say it took a lot of time to notice it
as I would never expect it and I still don't know how to fix it.
How does this happen? Is there are some specifics about pointers
and / or passing arguments that I should know?
What is also puzzling is that the project is about 4500 lines of
D code _full_ of pointers
and this happens in all calls I have checked and _somehow_ it was
working up until now.
Best regards,
Stefanos Baziotis
More information about the Digitalmars-d-learn
mailing list