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

Dùng con trỏ để tối ưu hoá thực thi Sau đây ta sẽ áp dụng những hiểu biết về con trỏ và minh họa 1 ví dụ mà ta thấy rõ lợi ích của việc dùng con trỏ trong thực thi Tạo ra mảng có nền là Stack Để tạo ra mảng này ta cần từ khoá stackalloc. | Những chủ đề tiến bộ trong C Các mã không an toàn - Phần 3 Dùng con trỏ để tối ưu hoá thực thi Sau đây ta sẽ áp dụng những hiểu biết về con trỏ và minh họa 1 ví dụ mà ta thấy rõ lợi ích của việc dùng con trỏ trong thực thi Tạo ra mảng có nền là Stack Để tạo ra mảng này ta cần từ khoá stackalloc. lệnh stackalloc chỉ dẫn thời gian chạy .NET để cấp phát 1 số vùng nhớ trên stack khi ta gọi nó ta cần cung cấp cho nó 2 thông tin Kiểu của biến mà ta muốn lưu trữ Ta cần lưu bao nhiêu biến trong ví dụ để cấp phát đủ vùng nhớ lưu trữ 10 số thập phân decimal ta viết decimal pDecimals stackalloc decimal 10 lệnh này chỉ đơn giản cấp phát vùng nhớ. không khởi tạo bất kì giá trị nào. Để lưu 20 số double ta viết double pDoubles stackalloc double 20 mặc dù dòng mã này đặc tả số biến được lưu là hằng điều này có thể là 1 định giá số lượng vào lúc chạy. vì thế ta có thể viết tương đương với ví dụ trên như sau int size size 20 or some other value calculated at run-time double pDoubles stackalloc double size Kiểu mảng cơ bản nhất mà có thể có là 1 khối bộ nhớ lưu các phần tử như sau Câu hỏi được đặt ra là làm thế nào ta sử dụng vùng nhớ mà ta vừa lại ví dụ ta vừa nói rằng giá trị trả về từ stackalloc trỏ đến bắt đầu của vùng đó cho phép ta có thể lấy vị trí đầu tiên của vùng nhớ được cấp dụ để cấp phát các số double và thiết lập phần tử đầu tiên phàn tử 0 của mảng giá trị tacó thể viết double pDoubles stackalloc double 20 pDoubles Ta có thể thiết lập phần tử thứ 2 của mảng bằng cách dùng cách tính toán trên con trỏ mà ta đã biết .Ví dụ nếu ta muốn đặt giá trị của phần tử thứ hai ta làm như sau double pDoubles stackalloc double 20 pDoubles pDoubles 1 Nó chung ta có thể lấy phần tử thứ X của mảng với biểu thức pDoubles X Bên cạnh đó C cũng định nghĩa 1 cú pháp thay thế .Nếu p là con trỏ và X là kiểu số thì biểu thức p X tương đương với p X . double pDoubles stackalloc double 20 pDoubles 0 pDoubles 0 is the same as pDoubles pDoubles 1 .

TỪ KHÓA LIÊN QUAN