2009-04-01 23 views
20

Bên cạnh thực tế là bản thân mã có thể truy cập trực tiếp vào bộ nhớ. Các tác động khác của việc sử dụng cờ trình biên dịch "/ không an toàn" và từ khóa "cố định" là gì? Có bất kỳ tiếng gõ trên các hiệu ứng liên quan đến việc ký mã và triển khai mã .exe của tôi (ứng dụng của tôi chỉ dành cho máy tính để bàn)?Các tác động của việc sử dụng mã không an toàn là gì

(Đây không phải là về việc có hay không tôi nên làm điều này, các tại sao được bao phủ trong câu hỏi của tôi here)

Trả lời

6

Mã không an toàn là không thể xác minh được, vì vậy bạn phải nhận thức được điều đó. Trong môi trường Full Trust, đó không phải là một vấn đề lớn, nhưng nếu bạn có các môi trường khác có quyền hạn chế hơn, thì điều này có thể ảnh hưởng đến bạn ở đó.

12

Bạn có thể đặt các tác động vào hai nhóm.

Cách thứ nhất là ảnh hưởng đến môi trường ứng dụng của bạn như thế nào. Sử dụng mã không an toàn yêu cầu lắp ráp của bạn phải chạy trong môi trường tin cậy đầy đủ. Không thể chạy trong môi trường bị hạn chế, chẳng hạn như một số cài đặt bảo mật nhất định. Lý do là mã không an toàn này ngăn CLR đảm bảo an toàn loại. Nhấp vào Mặc dù không có giới hạn bảo mật nên không gặp sự cố.

Cách thứ hai là ý nghĩa của cách bạn viết mã. Sử dụng mã không an toàn thường liên quan đến việc sử dụng con trỏ và đặc biệt, sử dụng chúng để thực hiện marshalling nâng cao thông qua PInvoke. Không có gì sai với một trong những hành động này mặc dù. Nó chỉ đòi hỏi sự hiểu biết nhiều hơn về CLR và marshalling hơn là mã "an toàn". Ghim đối tượng là một ví dụ tuyệt vời về kiến ​​thức bạn cần nắm bắt trước khi bắt đầu sử dụng các tính năng này.

2

Bổ sung vào tài liệu tham khảo Jared của đối tượng ghim ...

Khi sử dụng con trỏ để truy cập bộ nhớ trực tiếp trong C#, bạn dễ bị giảm sút CLR chuyển một vật thể xung quanh trong bộ nhớ khi chạy. Điều này có nghĩa là con trỏ của bạn có thể là một điểm bất ngờ ở phần sai của bộ nhớ. Từ khóa Fixed sẽ ghim đối tượng vào bộ nhớ để tránh sự cố này.

Các vấn đề liên quan