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
?
This is because value
is a local variable, allocated on the stack, so it's already fixed. This is mentioned in the error message:
CS0213 You cannot use the fixed statement to take the address of an already fixed expression
If you need the address of value
, you don't need the fixed
statement, you can get it directly:
int* pValue = &value;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With