Mục lục:
Định nghĩa - Không an toàn có nghĩa là gì?
Không an toàn là một từ khóa ngôn ngữ lập trình C (C #) được sử dụng để biểu thị một phần mã không được quản lý bởi Thời gian chạy ngôn ngữ chung (CLR) của .NET Framework hoặc mã không được quản lý. Không an toàn được sử dụng trong khai báo một loại hoặc thành viên hoặc để chỉ định mã khối. Khi được sử dụng để chỉ định một phương thức, bối cảnh của toàn bộ phương thức không an toàn.
Mã không an toàn cung cấp khả năng tương tác tốt với các giao diện lập trình ứng dụng (API) hoặc các cuộc gọi hệ thống không được quản lý và phục vụ như một giao diện tương thích cho các thư viện liên kết động (DLL) của bên thứ ba, yêu cầu con trỏ để truyền tham số. Mã không an toàn cũng có thể được sử dụng trong quá trình gỡ lỗi, khi nội dung quá trình yêu cầu kiểm tra hoặc phân tích.
Techopedia giải thích về sự không an toàn
Dữ liệu không an toàn đề cập đến dữ liệu bộ nhớ được phân bổ không được kiểm soát bởi CLR, chẳng hạn như tay cầm hoặc con trỏ của Windows được phân bổ thông qua một phương thức mới.
Mã không an toàn đề cập đến một câu lệnh hoặc phương thức truy cập bộ nhớ không được quản lý, bao gồm:
- Gọi API Windows
- Các cuộc gọi đến các thành phần giao diện phương thức Mô hình đối tượng thành phần (COM) liên quan đến các cấu trúc có con trỏ hoặc mã quan trọng thực hiện.
Mã không an toàn chủ yếu được sử dụng khi các hoạt động liên quan đến con trỏ và nói chung, khi mã được thực thi bên ngoài bối cảnh được quản lý. Biên dịch mã không an toàn yêu cầu đặc điểm kỹ thuật của tùy chọn "/ không an toàn" với lệnh biên dịch.
Trong các môi trường hoàn toàn tin cậy, CLR được yêu cầu để thực thi mã không an toàn. Tuy nhiên, CLR không xác minh mã không an toàn. CLR hỗ trợ mã không an toàn để cung cấp quyền truy cập trực tiếp vào mã bộ nhớ không được quản lý, đôi khi được ưa thích vì lý do hiệu suất.
Vì CLR duy trì an toàn và bảo mật loại, C # không hỗ trợ số học con trỏ trong mã được quản lý, không giống như C / C ++. Từ khóa không an toàn cho phép sử dụng con trỏ trong mã không được quản lý. Tuy nhiên, an toàn không được đảm bảo vì các quy tắc truy cập đối tượng nghiêm ngặt không được tuân theo. Ví dụ, các khả năng hoạt động của con trỏ không được cung cấp trong Môi trường chạy thi hành Java (JRE).
Mã không an toàn có thể tạo ra các vấn đề với tính ổn định và bảo mật, do cú pháp phức tạp vốn có của nó và tiềm ẩn các lỗi liên quan đến bộ nhớ, chẳng hạn như tràn ngăn xếp, truy cập và ghi đè bộ nhớ hệ thống. Chăm sóc thêm cho nhà phát triển là tối quan trọng để tránh các lỗi tiềm ẩn hoặc rủi ro bảo mật.
