Memory allocation in string concatenation in C# -
let,
string = “test”; string b = “test 2”; string c = + b the output of c "testtest 2"
i know how memory allocated?
string = "test"; you create reference called a , pointing "test" object in memory.
string b = "test 2"; you create reference called b , pointing “test 2” object in memory.
string c = + b; you allocating new memory address a + b (and process uses string.concat method.) because strings immutable in .net. , c reference assing new memory address.
here il code of this;
il_0000: nop il_0001: ldstr "test" il_0006: stloc.0 il_0007: ldstr "test 2" il_000c: stloc.1 il_000d: ldloc.0 il_000e: ldloc.1 il_000f: call string [mscorlib]system.string::concat(string, string) il_0014: stloc.2 il_0015: ldloc.2 stloc.0 used, stores value on top of evaluation stack local memory slot 0.
ldstr instruction used load string memory or evaluation stack. necessary load values evaluation stack before can utilized.
the ldloc instruction load local instruction. ldloc places value of local variable on stack.
Comments
Post a Comment