Thứ Hai, ngày 25 tháng 1 năm 2010

// // Leave a Comment

stacklloc Keyword C#

Từ khoá stackalloc được sử dụng trong đoạn mã không an toàn unsafe để cấp phát một khối bộ nhớ trên Stack.

int* fib = stackalloc int[100];

Trong ví dụ trên, một khối nhớ có kích thước đủ để chứa 100 phần tử kiểu int được cấp phát trên Stack, không phải là heap; địa chỉ của khối này được lưu giữ trong con trỏ fib. Đây là bộ nhớ không thể thu thập rác và do đó không có pinned (cố định). Thời gian sống của bộ nhớ được giới hạn trong đời của phương thức, trong đó nó được định nghĩa( không có cách nào để giải phóng bộ nhớ trước khi phương thức kết thúc).

stackalloc chỉ có giá trị tại địa phương.

Bởi vì các con trỏ kiểu có liên quan, stacklloc yêu cầu bối cảnh không an toàn (unsafe context). Xem lại mã không an toàn và con trỏ.

stackalloc giống như _alloca trong thư viện C thời gian chạy(run-time).

0 comments: