C# ben mik azok a pointer típusok és mi az a unsafe mód?
Figyelt kérdés
És a sizeof operátor miért csak ebben a módban alkalmazható.2014. jan. 30. 21:25
1/4 anonim válasza:
unsafe módban el tudsz helyezni olyan részeket is a forráskódban (unsafe blokkokban), ahol a GC-t kikerülve, alacsonyabb szinten tudsz hozzáférni a memóriához - én a feltétlenül(!!!) _szükséges_ teljesítmény-optimalizáláson illetve bonyolultabb Platform Invoke-okon (pl natív DLL-ek meghívásán) kívül nem nagyon látok olyan okot, ami miatt ezt használni kéne. (Jellege miatt ilyenkor az alkalmazást is /unsafe kapcsolóval kell fordítani).
Nem tudom, mire akarod használni, de legtöbb esetben a Marshal.SizeOf() tökéletesen működik.
2/4 anonim válasza:
A sizeof operátor nem csak unsafe módban működik.
Ref:
"Starting with version 2.0 of C#, applying sizeof to built-in types no longer requires that unsafe mode be used."
3/4 anonim válasza:
Pointer esetén te használod a memória cím szerint a változókat. Natív programok esetén ez nem gond, de C# esetén a fordító menedzseli a memóriát, és míg te használsz egy memória címen valamit, addig ő szépen átpakolja más címre, mert a szemétgyűjtő automatikusan felszabadítja azokat a memória területeket amikre nincsenek hivatkozások. Ennek elkerülése érdekében fixed(int* p) ként célszerű deklarálni egy pointert, így nem nyúl a memóriacímhez. De a C# alapesetben nem támogatja a pointereket, mert a logikájának ellent mond, és mint ahogy írtam a memória menedzselő optimalizálja a memóriát, és már messze van az a C-s korszak, hogy csak ezzel lehetne megoldani valamit, de ha mégis használni akarod, ahhoz be kell kapcsolni az unsafe módot.
4/4 A kérdező kommentje:
Értem köszi a válaszokat egyébként pointereken kívül,hogyan oldahtó meg egy c++ ban írt dll által lefoglalt memória felszabadítasá?
2014. jan. 31. 21:15
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!