2012-01-21 29 views
11

Bố cục bộ nhớ của lớp CLR là gì?Bố cục bộ nhớ lớp CLR

Xuất phát từ nền C++, bố cục bộ nhớ của lớp C++ có chức năng ảo bắt đầu bằng con trỏ v-table và sau đó là thành viên dữ liệu của lớp theo trong bộ nhớ.

Các lớp CLR có chức năng ảo có con trỏ v-table không? Con trỏ này có phải là trường đầu tiên trong bố trí bộ nhớ lớp không? Có bất kỳ trường bổ sung nào trong bố trí bộ nhớ lớp CLR ngoài các thành viên dữ liệu được định nghĩa của người lập trình không? Và những trường bổ sung này đại diện cho điều gì?

+0

bố cục bộ nhớ của các lớp C# thường được xác định bởi JITTER và do đó chỉ được biểu hiện trong thời gian chạy (mặc dù có một số ngoại lệ). – Yahia

+3

C# không có gì để nói về bố cục bộ nhớ. Đây là về các lớp CLR. –

+0

Nếu bạn muốn xem VTable theo cách thực tế hơn, bạn có thể theo dõi các bài viết như thế này để chạy lệnh '! DumpMT -MD address' tại WinDbg, https://blogs.msdn.microsoft.com/kristoffer/2007/ 01/02/setting-a-breakpoint-in-managed-code-using-windbg/ –

Trả lời

9

Đó là triển khai cụ thể, nhưng this article mô tả về những gì đã có trong triển khai Microsoft .NET, cho CLR v2. Tôi nghi ngờ cũng giống như vậy đối với CLR v4, nhưng tôi không thể đảm bảo. Hãy tìm một phần được gọi là "ObjectInstance" để biết chi tiết - nhưng bạn có thể thấy toàn bộ bài viết thú vị.

Theo bài báo, về cơ bản có hai bit của tiêu đề: khối sync được sử dụng để khóa và loại tài liệu tham khảo mà về cơ bản là một con trỏ để gõ thông tin (bao gồm cả vtable).

+0

Cảm ơn! Bài viết bạn chỉ cho tôi có vẻ như những gì tôi đang tìm kiếm. –

+0

Liên kết này bị hỏng. :( –

+0

@MrAnderson: Chuột - không chắc chắn cách tìm kiếm điều đó, thật không may ... –

1

Bài viết "Jit and Run" gốc là still around, as a chm file. Chỉ cần làm theo MSDN instructions để có thể đọc:

Trên hầu hết các phiên bản của cửa sổ đầu tiên bạn phải lưu những tập tin này để máy tính cục bộ của bạn, và sau đó mở khóa các tập tin để đọc nó. Để bỏ chặn một tệp, hãy nhấp chuột phải vào tệp và chọn thuộc tính, sau đó chọn chọn nút ‘bỏ chặn’. Sau đó, nội dung sẽ có sẵn cho đọc

Tuy nhiên, Jon Skeet đáng kính - và bố cục bộ nhớ đối tượng đã thực sự thay đổi. Sasha Goldstein đưa ra một cuộc khảo sát cập nhật (CLR v4) về bố cục, here.

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