tailieunhanh - Những chủ đề tiến bộ trong C# Các mã không an toàn – Phần 1

Có những trường hợp ta cần truy xuất bộ nhớ trực tiếp khi ta muốn truy xuất vào các hàm bên ngoài ( không thuộc .NET) mà đòi hỏi con trỏ được truyền vào như tham số( ví dụ như các hàm API ).hoặc là vì ta muốn truy nhập vào nội dung bộ nhớ để sửa lỗiTrong phần này ta sẽ xem xét cách C# đáp ứng những điều này như thế nào. Con trỏ ( trình bày vắng tắt ) | Những chủ đề tiến bộ trong C Các mã không an toàn - Phần 1 Có những trường hợp ta cần truy xuất bộ nhớ trực tiếp khi ta muốn truy xuất vào các hàm bên ngoài không thuộc .NET mà đòi hỏi con trỏ được truyền vào như tham số ví dụ như các hàm API .hoặc là vì ta muốn truy nhập vào nội dung bộ nhớ để sửa phần này ta sẽ xem xét cách C đáp ứng những điều này như thế nào. Con trỏ trình bày vắng tắt Con trỏ đơn giản là 1 biến lưu địa chỉ của một thứ khác theo cùng 1 cách như là 1 tham chiếu. sự khác biệt là cú pháp C trong tham chiếu không cho phép ta truy xuất vào địa chỉ bộ nhớ. 3 ưu điểm của con trỏ Cải thiện sự thực thi cho ta biết những gì ta đang làm đảm bảo rằng dữ liệu được truy xuất hay thao tác theo cách hiệu quả nhất - đó là lí do mà C và C cho phép dung con trỏ trong ngôn ngữ của mình. Khả năng tích hợp với các phần trước Backward compatibility - đôi khi ta phải sử dụng lại các hàm API cho mục đích của các hàm API được viết bằng C ngôn ngữ dùng con trỏ rất nhiều nghĩa là nhiều hàm lấy con trỏ như tham là các DLL do 1 hãng nào đó cung cấp chứa các hàm lấy con trỏ làm tham số . Trong nhiều trường hợp ta có thể viết các khai báo DLlImport theo cách tránh sử dụng con trỏ ví dụ như dùng lớp . Ta có thể cần tạo ra các địa chỉ vùng nhớ có giá trị cho người dùng -ví dụ nếu ta muốn phát triển 1 ứng dụng mà cho phép người dùng tương tác trực tiếp đến bộ nhớ như là 1 debugger. Nhược điểm Cú pháp để lấy các hàm phức tạp hơn Con trỏ khó sử dụng Nếu không cẩn thận ta có thể viết lên các biến khác làm tràn stack mất thông tin đụng độ . C có thể từ chối thi hành những đoạn mã không an toàn này đoạn mã có sử dụng con trỏ Ta có thể đánh dấu đoạn mã có sử dụng con trỏ bằng cách dùng từ khoá unsafe Ví dụ dùng cho hàm unsafe int GetSomeNumber code that can use pointers Dùng cho lớp hay struct unsafe class MyClass any method in this class can now use pointers Dùng cho 1 trường class MyClass unsafe int pX declaration of a pointer field in a class .

TỪ KHÓA LIÊN QUAN