Hirdetés

Aktív témák

  • pmonitor

    aktív tag

    válasz cucka #50 üzenetére

    Köszönöm, hogy leírtad a véleményed. Viszont azután sem értek egyet veled, hogy többször is elolvastam, amit írtál, és nagyjából értem is az álláspontod. Az unsafe kódban valójában 1 konstans(pontosabban read only) memóriát módosítok. A string literál címe akkor jön létre, amikor betölti a .exe file-t a memóriába, és onnantól kezdve fix memóriacímen van. Ha asm kódban debuggoljuk, akkor a címe ez:
    string s = "asdfg";
    00C0087D mov eax,dword ptr ds:[3D3242Ch]

    De a 3D3242Ch címen csak referencia van(0x02D322F0). Ahová az mutat, ott van a string:
    0x02D322F0 dc ab c9 6f 05 00 00 00 61 00 73 00 64 00 66 00 67 00

    Tehát a referencia alacsony szinten egy mutató. Magas szinten referenciának keresztelték el. Mert C#-ban a mutató kifejezés már foglalt. C#-ban a mutató az, amit unsafe kódban lehet használni.
    Ezek miatt nem értek veled egyet.

Aktív témák