VampireSilence hat folgendes geschrieben : |
Hallo Zusammen,
ich hätte da mal eine relativ simple Frage, die sich mir aber nicht ganz erschließt. Wenn ich eine Funktion oder einen Code-Abschnitt als unsafe deklariere, kann ich dort in C# Pointer einsetzen. Aber wieso werden Pointer überhaupt als unsicher angesehen ? Ich meine in C ist der Umgang damit doch schließlich auch Gang und Gebe.
mfg
- VampireSilence |
Mit Pointern bekommst du ein starkes Werkzeug, mit dem man ziemlich viel machen kann. Man kann aber auch ziemlich viel kaputt damit machen. Pointer sind für die meisten Dinge in .net überflüssig. Wenn man mit pointern arbeitet verliert man sehr viel Sicherheit, die man durch .net erhält. Und damit man das nicht als C-Programmierer macht, und die Gewohnheiten fortsetzt muss man solchen Code in unsafe Blöcke stecken. Außerdem verlangen Pointer Operationen feste Speicherbereiche, wo die Daten liegen. Das ist generell in .net nicht gegeben. Die Runtime schiebt die aten hin und her, so, wie sie am besten passen. Deswegen auch zB das fixed Schlüsselwort um das verschieben zu verhindern. Damit stellt man sich selbst ein Bein, indem man der Runtime verbietet zu Optimieren. Das ist nicht im Sinne des Erfinderst. Und um zu bestätigen, dass du dir darüber im klaren bist braucht man das unsafe Schlüsselwort und muss mit /unsafe kompilieren