2012-03-20 29 views
5

Virtual method interception - được giới thiệu với Delphi XE - có thể được sử dụng để 'proxify' phương pháp để mã tùy chỉnh có thể được thực thi trước và sau phương pháp gốc.Tôi có thể thực hiện giám sát số lượng mẫu bằng cách sử dụng TVirtualMethodInterceptor không?

Điều này cũng có thể được sử dụng để giữ một số của tất cả các trường hợp đối tượng trong một ứng dụng Delphi, bằng cách proxyfying các phương pháp ảo TObject.AfterConstruction và TObject.BeforeDestruction?

Nếu có, đây có thể là cách đơn giản để phân tích số liệu thống kê phân bổ bộ nhớ FastMM4 trong thời gian chạy (sử dụng thuộc tính InstanceSize của đối tượng và khớp với khối bộ nhớ được phân bổ).


Cập nhật: xin lỗi cho hỏi một câu hỏi mà rất dễ dàng để trả lời từ những thông tin DocWiki - Tôi đã đọc bài viết liên kết đầu tiên và duy lướt mã ví dụ

+0

... có? Tôi không thể hiểu tại sao không. Bạn đã thử à? Thực hiện các proxy, tăng và giảm một bộ đếm (có thể sử dụng [tăng/giảm an toàn luồng] [http://msdn.microsoft.com/en-us/library/windows/desktop/ms683614 (v = vs.85) .aspx)) và, um ... có bạn đi. –

+0

Bạn không thể làm điều này dễ dàng hơn nhiều bằng cách sửa đổi các nguồn FastMM? –

+0

@WarrenP FastMM không có kiến ​​thức về các loại thực tế mà nó cung cấp các khối bộ nhớ, nó chỉ xử lý yêu cầu cấp phát bộ nhớ/deallocation – mjn

Trả lời

3

Không, đó không phải đi làm việc. Từ documentation, với sự nhấn mạnh của tôi:

Cho phép người sử dụng để tự động chặn các cuộc gọi phương pháp ảo trên trường hợp quy định của một loại lớp học đặc biệt.

Vấn đề là bạn cần giữ lại từng trường hợp trước khi bạn có thể xác nhận. Nhưng bạn đang hy vọng để proxify để có được giữ của trường hợp. Vì vậy, bạn đang bị bắt trong một kịch bản gà và trứng.

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