I tested the keyword fixed
with array and string variables and worked really well but I can't use with a single variable.
static void Main() {
int value = 12345;
unsafe {
fixed (int* pValue = &value) { // problem here
*pValue = 54321;
}
}
}
The line fixed (int* pValue = &value)
causes a complier error. I don't get it because the variable value
is out of the unsafe
block and it is not pinned yet.
Why can't I use fixed
for the variable value
?
fixed
has two completely orthogonal meanings in different contexts. It's used to create arrays inline in a structure, and it's used to pin a value in memory so that it cannot be moved by the GC while its accessed in unmanaged code. – Sanmiguelvalue
inside the unsafe block? – Guenevereint value = 12345;
is already fixed expression. so you just need its pointer.int* pointer = &value;
– Kropp