Làm th? nào đ? s? d?ng Pageheap.exe trong Windows XP, Windows 2000 và Windows Server 2003

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 286470 - Xem s?n ph?m mà bài này áp d?ng vào.
Bung t?t c? | Thu g?n t?t c?

? Trang này

TÓM T?T

Bài vi?t này mô t? cách s? d?ng công c? Page Heap (Pageheap.exe) trong Microsoft Windows XP, Microsoft Windows 2000 và Microsoft Windows Server 2003.

THÔNG TIN THÊM

Pageheap.exe đ?t trang đ?ng lá c? có th? tr? giúp đ? t?m đ?ng liên quan tham nh?ng. Nó c?ng có th? giúp phát hi?n r? r? trong chương tr?nh ch?y trên Windows 2000 Professional Service Pack 2 (SP2) và Windows XP H? th?ng chuyên nghi?p.

Pageheap.exe gi?i thi?u m?t xác nh?n ph?n m?m l?p (Page Heap qu?n l?) gi?a các ?ng d?ng và h? th?ng đ? ki?m ch?ng t?t c? các b? nh? năng đ?ng ho?t đ?ng (phân b?, gi?i phóng, và các ho?t đ?ng khác c?a đ?ng). Khi qu?n l? Page Heap đư?c kích ho?t, ?ng d?ng đó đang đư?c th? nghi?m là sau đó b?t đ?u theo m?t tr?nh g? l?i. N?u g?p m?t v?n đ? là, nó s? gây ra m?t tr?nh g? l?i phá v?.

Quan tr?ng Pageheap.exe không xác đ?nh các l?i là g?, nhưng nó s? s?p đ? h? th?ng khi g?p ph?i m?t v?n đ?. Nó cho phép xác minh m?t l?p mà đ? t?n t?i trong các thư vi?n h? th?ng Ntdll.dll trong Windows 2000 Professional SP2 và Windows XP Professional. Pageheap.exe s? không làm vi?c ngày trư?c các phiên b?n c?a Microsoft Windows.

N?u ?ng d?ng đang đư?c th? nghi?m không ph?i là b?t đ?u theo m?t tr?nh g? l?i và m?t l?i là g?p ph?i, nó s? ch? s?p đ? mà không c?n b?t k? thông tin ph?n h?i.

Khái ni?m

M?t v?n đ? ph? bi?n trong phát tri?n ?ng d?ng là tham nh?ng heap này. Đi?u này thư?ng x?y ra khi m?t ?ng d?ng phân b? m?t kh?i đ?ng b? nh? c?a m?t cho kích thư?c và sau đó vi?t đ?a ch? b? nh? ngoài kích thư?c đư?c yêu c?u c?a các đ?ng kh?i. Tham nh?ng heap này c?ng có th? x?y ra khi m?t ?ng d?ng vi?t đ? ch?n b? nh? đ? đư?c gi?i phóng.

Hai khái ni?m là trung tâm c?a hi?u bi?t v? các l?nh liên quan đ?n Pageheap.exe và cách s? d?ng nó:
  • Nhi?m trong đ?ng kh?i đư?c phát hi?n b?ng cách đ?t m?t trong hai m?t trang không th? truy c?p ? ph?n cu?i c?a phân b?, ho?c b?ng cách ki?m tra đi?n các m?u khi kh?i gi?i phóng.
  • Có hai heaps (Full-trang đ?ng và b?nh thư?ng trang đ?ng) Đ?i v?i m?i đ?ng t?o trong m?t quá tr?nh đư?c r?ng có trang đ?ng b?t.
    • Full-trang đ?ng ti?t l? nhi?m trong đ?ng kh?i b?ng cách đ?t m?t phi-accessible Trang cu?i c?a phân b?. L?i th? c?a phương pháp này là b?n đ?t đư?c "cái ch?t đ?t ng?t," có ngh?a r?ng quá tr?nh này s? truy c?p vào vi ph?m (AV) chính xác t?i đi?m c?a s? th?t b?i. Hành vi này làm cho d? dàng đ? g? l?i th?t b?i. Nh?ng b?t l?i là m?i phân b? s? d?ng ít nh?t m?t trang c?a cam k?t b? nh?. Cho m?t quá tr?nh thâm canh b? nh?, h? th?ng tài nguyên có th? nhanh chóng ki?t s?c.
    • B?nh thư?ng trang đ?ng có th? đư?c s? d?ng trong các t?nh hu?ng nơi b? nh? h?n ch? khi?n Full-trang đ?ng không s? d?ng đư?c. Nó s? ki?m tra các m?u đi?n khi m?t kh?i đ?ng gi?i phóng. L?i th? c?a phương pháp này là nó m?nh làm gi?m m?c tiêu th? b? nh?. Nh?ng b?t l?i là r?ng nhi?m s? ch? đư?c phát hi?n khi kh?i là gi?i phóng. Đi?u này làm cho th?t b?i khó khăn hơn đ? g? l?i.

T?i v? v? trí công c? Pageheap

Đ? t?i v? các gói ph?n m?m m?i nh?t công c? g? l?i, b?m vào đây liên k?t:
http://www.microsoft.com/whdc/devtools/debugging/default.mspx


Ch?n vi?c phát hành m?i nh?t c?a các công c? g? l?i. Khi b?n cài đ?t các công c?, ch?n các Tu? ch?nh cài đ?t, và sau đó cài đ?t vào m?t thư m?c v?i m?t tên thích h?p. Ví d?, cài đ?t công c? đ? C:\Debug ho?c C:\Debugtools.

Ch?n m?t phương pháp đ? đi?u tra Heap kh?i nhi?m

H?u h?t các nhi?m trong đ?ng kh?i có th? đư?c phát hi?n trong m?t hai cách:
  • Full-trang đ?ng: đ?t m?t trang không th? truy nh?p cu?i vi?c phân b?.
  • B?nh thư?ng trang đ?ng: ki?m tra đi?n vào các m?u khi ch?n đư?c gi?i phóng.

Full-trang Heap

Full-trang đ?ng nên đư?c kích ho?t cho các quy tr?nh riêng l?, ho?c dư?i gi?i h?n tham s? cho các quy tr?nh l?n, v? c?a b? nh? cao c?a nó yêu c?u. Nó không th? đư?c kích ho?t toàn h? th?ng, b?i v? nó là khó khăn đ? đánh giá các yêu c?u trang kích thư?c. B?ng cách s? d?ng m?t t?p hoán trang quá nh? v?i toàn h? th?ng Full-trang đ?ng ám h? th?ng unbootable.

Các l?i th? c?a Full-trang đ?ng là nó gây ra m?t quá tr?nh đ? truy c?p vi ph?m (AV) chính xác t?i đi?m c?a s? th?t b?i. Đi?u này làm cho s? th?t b?i d? dàng đ? g? l?i. Theo th? t? đ? có th? xác đ?nh th?t b?i, l?n đ?u tiên s? d?ng b?nh thư?ng trang đ?ng đ? xác đ?nh các t?m ho?t đ?ng nơi m?t quá tr?nh th?t b?i, và sau đó s? d?ng Full-trang đ?ng trên cá nhân quy tr?nh quy mô l?n cho r?ng gi?i h?n l?p phân b? (có ngh?a là, m?t ph?m vi kích thư?c c? th? ho?c m?t thư vi?n c? th?).

B?nh thư?ng trang Heap

B?nh thư?ng trang đ?ng có th? đư?c s? d?ng đ? th? nghi?m c?a quy mô l?n quá tr?nh mà không có vi?c tiêu th? b? nh? cao r?ng đ?ng Full-trang đ?i h?i. Tuy nhiên, b?nh thư?ng trang đ?ng ch?m tr? phát hi?n cho đ?n khi kh?i đư?c gi?i thoát, do đó làm cho th?t b?i nhi?u khó khăn đ? g? l?i.

Nói chung, s? d?ng b?nh thư?ng trang đ?ng cho ban đ?u quy mô l?n quá tr?nh th? nghi?m. Sau đó, n?u v?n đ? đư?c phát hi?n, cho phép Full-trang đ?ng cho m?t l?p phân b? ? nh?ng ngư?i b? gi?i h?n quy tr?nh.

B?nh thư?ng trang đ?ng có th? an toàn cho phép toàn h? th?ng cho t?t c? quy tr?nh. Đi?u này là r?t h?u ích trên băng gh? th? nghi?m th?c hi?n h? th?ng chung xác nh?n, ch? không ph?i là thành ph?n t?p trung vào th? nghi?m. B?nh thư?ng trang đ?ng c?ng có th? có hi?u l?c cho m?t quá tr?nh duy nh?t.

B?ng cách s? d?ng GFlags v?i h? th?ng toàn trang Heap

Các GFlags công c? đư?c s? d?ng đ? kích ho?t b? nh? h? th?ng toàn trang. Đ? cho m?t GFlags l?nh có hi?u l?c, b?n ph?i kh?i đ?ng l?i máy tính c?a b?n sau khi b?n phát hành l?nh.

Đ? kích ho?t toàn h? th?ng b?nh thư?ng trang đ?ng:
  1. Lo?i sau t?i d?ng l?nh:gflags - r + hpa

  2. Kh?i đ?ng l?i máy tính c?a b?n.
Đ? vô hi?u hóa toàn h? th?ng b?nh thư?ng trang đ?ng:
  1. Lo?i sau t?i d?ng l?nh:gflags - r - hpa

  2. Kh?i đ?ng l?i máy tính c?a b?n.
Chú ý Không có cài đ?t GFlags khác có h?u ích khi b?n kích ho?t trang đ?ng. N?u các thi?t đ?t khác mà dư?ng như có liên quan đ?n heap đư?c kích ho?t, sau đó trang đ?ng l?i có th? đư?c gi?i thi?u do cu?c xung đ?t gi?a trang đ?ng qu?n l? và nh?ng lá c? "vô h?i" heap này.

B?ng cách s? d?ng GFlags v?i m?t quá tr?nh đơn trang Heap

B?n có th? b?t heap trang đ? giám sát m?t quá tr?nh c? th?. Đ? làm Đi?u này, h?y làm theo các bư?c sau:
  1. M?t d?u nh?c l?nh, thay đ?i thư m?c nơi b?n cài đ?t g? l?i công c?.
  2. T?i d?u nh?c l?nh, g? như sau, và sau đó b?m NH?P:
    Gflags.exe /p /enableLsass.exe
    Chú ý Lsass.exe là vi?t t?t c?a tên c?a quá tr?nh mà b?n b?n mu?n giám sát công c? Pageheap.
  3. Khi b?n không c?n c?n trang đ?ng giám sát, vô hi?u hóa vi?c giám sát. Đ? th?c hi?n vi?c này, lo?i sau t?i d?u nh?c l?nh, và sau đó nh?n NH?P:
    Gflags.exe /p /disable Lsass.exe
    Chú ý Lsass.exe là vi?t t?t c?a tên c?a quá tr?nh mà b?n b?n mu?n giám sát công c? Pageheap.
  4. Vào danh sách t?t c? các chương tr?nh hi?n nay có Pageheap xác minh đư?c kích ho?t, g? sau m?t d?u nh?c l?nh, và sau đó báo chí NH?P:
    Gflags.exe /p

Phân b? removed

Các nhà qu?n l? b? nh? Windows (m?i phiên b?n) đ? luôn luôn b?o đ?m c?p phát b? nh? có m?t đ?a ch? b?t đ?u là 8-byte aligned (ngày n?n t?ng 64-bit alignment là 16-byte). Ngư?i qu?n l? đ?ng trang làm cho các cùng m?t b?o l?nh. Đi?u này là không th?, tuy nhiên, n?u b?n mu?n có các k?t thúc-c?a-the-giao chính xác ? ph?n cu?i c?a m?t trang. K?t thúc-c?a-trang chính xác phân b? là c?n thi?t đ? cho l?i t?t-c?a-m?t-byte s? kích ho?t m?t đ?c ho?c ghi vào trang không th? truy c?p và gây ra m?t l?i ngay l?p t?c.

N?u Kích thư?c ngư?i dùng yêu c?u cho kh?i không ph?i là 8 byte liên k?t, sau đó trang đ?ng không th? đáp ?ng c? hai "b?t đ?u đ?a ch? 8 byte liên k?t" và "cu?i đ?a ch? trang liên k?t"ràng bu?c. Gi?i pháp là đ? đáp ?ng các h?n ch? đ?u tiên và làm cho các b?t đ?u c?a các kh?i 8-byte liên k?t. Sau đó s? d?ng m?t m?u nh? đi?n gi?a các k?t thúc c?a kh?i và b?t đ?u trang không th? truy c?p. Đi?n vào m?u này có th? t? 0 byte qua 7 byte dài trên ki?n trúc 32-bit. Đi?n vào mô h?nh đư?c ch?n khi mi?n phí.

N?u phát hi?n l?i ngay l?p t?c là c?n thi?t Đ?i v?i các phân b? mà n?u không s? có m?t khuôn m?u đi?n vào cu?i, làm cho ngư?i qu?n l? đ?ng trang b? qua các quy t?c 8-byte ch?nh, và luôn luôn align các k?t thúc c?a phân b? ? m?t ranh gi?i trang b?ng cách s? d?ng các / removed/ full các tham s?. Đ? bi?t thêm chi ti?t, xem các / removed tham s?.

LƯU ?: Chương tr?nh m?t s? làm cho các gi? đ?nh v? 8-byte ch?nh và h? ng?ng làm vi?c m?t cách chính xác v?i các / removed tham s?. Microsoft Internet Explorer là m?t trong nh?ng chương tr?nh như v?y.

Kho?n trang cho Full-trang đ?ng phân b?

Full-trang đ?ng l?i th?c hi?n cam k?t hai trang cho b?t k? phân b? nh? hơn so v?i m?t trang. M?t trong nh?ng trang đư?c s? d?ng cho vi?c phân b? các ngư?i s? d?ng, và khác đư?c th?c hi?n không truy c?p ? ph?n cu?i c?a b? đ?m.

K?t thúc c?a b? đ?m nghiêm có th? phát hi?n b?ng cách s? d?ng m?t khu v?c dành riêng ?o không gian, thay v? m?t trang cam k?t không có th? truy c?p. M?t s? vi ph?m truy c?p ngo?i l? x?y ra khi quá tr?nh ch?m đ? dành không gian ?o. Đi?u này cách ti?p c?n có th? làm gi?m m?c tiêu th? b? nh? lên đ?n 50 ph?n trăm. Đ? bi?t thêm thông tin, xem các / decommit tham s?.

L?i tiêm

B?n có th? ki?m soát trang đ?ng qu?n l? do đó m?t s? phân b? là c? ? đ? th?t b?i. Đi?u này là h?u ích trong mô ph?ng thi?u b? nh? đi?u ki?n mà không c?n th?c s? s? d?ng t?t c? các tài nguyên h? th?ng.

Ch? ra s? t? 1 đ?n 10.000 đ? đ?i di?n cho xác su?t mà m?t phân b? s? th?t b?i. B?ng cách s? d?ng m?t xác su?t c?a 10.000 đ?m b?o r?ng 100 ph?n trăm c?a phân b? s? th?t b?i. Một xác su?t 2.000 xác đ?nh r?ng kho?ng 20 ph?n trăm phân b? s? không thành công.

Ngư?i qu?n l? đ?ng trang c?n chăm sóc đ?c bi?t đ? tránh l?i tiêm trong c? 5 giây đ?u tiên c?a quá tr?nh cu?c s?ng, và Windows NT b? n?p m? đư?ng d?n (cho exampole, LoadLibrary, FreeLibrary). N?u không ph?i là 5 giây đ? đ? cho phép quá tr?nh c?a b?n đ? kh?i đ?ng đ?y đ?, sau đó b?n có th? ch? m?t dài th?i gian ch? ? đ?u c?a quá tr?nh. Đ? bi?t thêm chi ti?t, xem các /Fault tham s?.

Khi b?n s? d?ng các /Fault tham s? và quá tr?nh đang đư?c th? nghi?m có m?t l?i, m?t ngo?i l? s? đư?c nâng lên. Nói chung, l? do cho vi?c này là chi?n d?ch allocate tr? v? m?t NULL, và các ?ng d?ng sau đó c? g?ng truy c?p các c?p b? nh?. B?i v? allocate không thành công, tuy nhiên, b? nh? không th? truy c?p, và do đó m?t vi ph?m truy c?p x?y ra.

Các l? do đó m?t ngo?i l? đư?c nêu ra là các ?ng d?ng c? g?ng đ? đ?i phó v?i vi?c phân b? s? th?t b?i, nhưng không phát hành m?t s? tài nguyên. Đi?u này bi?u hi?n như m?t r? r? b? nh? và khó khăn hơn đ? g? l?i.

Đ? giúp ch?n đoán đây th?t b?i, ngư?i qu?n l? đ?ng trang gi? m?t l?ch s? c?a ch?ng d?u v?t t? th?i đi?m này s? l?i tiêm. Các d?u v?t có th? đư?c hi?n th? v?i tr?nh g? l?i sau l?nh:

! heap -p -f [s? d?u V?T]

Theo m?c đ?nh ph?n m? r?ng s? hi?n th? ch? cu?i cùng b?n d?u v?t.

T? đ?ng g?n m?t tr?nh g? l?i khi kh?i đ?ng ?ng d?ng

M?t s? ?ng d?ng r?t khó đ? b?t đ?u t? m?t d?u nh?c l?nh, ho?c h? đư?c sinh ra t? quá tr?nh khác. Đ?i v?i các ?ng d?ng này, ch? ra r?ng, b?t c? khi nào h? đang b?t đ?u, m?t tr?nh g? l?i s? t? đ?ng đư?c g?n v?i h?. Đi?u này là h?u ích n?u trang đ?ng đư?c kích ho?t cho r?ng quá tr?nh và đ?ng th?t b?i x?y ra. Đ? bi?t thêm chi ti?t, xem các /Debug tham s?.

Pageheap.exe là có hi?u qu? khi s? d?ng đ? xác minh b?t k? quá tr?nh c?p phát b? nh?, bao g?m c? phân b? C++ phong cách m?i và xóa, mi?n là các ch?c năng tùy ch?nh phân b?/Vi?t cu?i cùng g?i vào NT đ?ng qu?n l? giao di?n (có ngh?a là, RtlAllocateHeap, Js_lockgcthingrt). Các ch?c năng sau đây đư?c b?o đ?m đ? làm đi?u đó:
  • Ch?c năng gi?ng như HeapAlloc, HeapFree, HeapReAlloc: Các ch?c năng này đư?c xu?t kh?u b?ng kernel32.dll và g?i tr?c ti?p vào giao di?n đ?ng NT. Ch?c năng gi?ng như GlobalAlloc, GlobalFree, GlobalReAlloc: Các ch?c năng này đư?c xu?t kh?u b?ng kernel32.dll và g?i cho m?t trong hai tr?c ti?p ho?c gián ti?p vào NT heap giao di?n.
  • Ch?c năng gi?ng như LocalAlloc, LocalFree, LocalReAlloc: Các ch?c năng này đư?c xu?t kh?u b?ng kernel32.dll và g?i cho m?t trong hai tr?c ti?p ho?c gián ti?p vào NT heap giao di?n.
  • Hàm malloc, mi?n phí, realloc, Mc?, m? r?ng: Các ch?c năng này đư?c xu?t kh?u b?ng msvcrt.dll và g?i cho m?t trong hai tr?c ti?p ho?c gián ti?p vào NT heap này. Đi?u này đ? không luôn luôn là các trư?ng h?p. C th?i gian ch?y đư?c s? d?ng đ? có m?t th?c hi?n khác nhau đ?ng, nhưng hi?n t?i c th?i gian ch?y các cu?c g?i tr?c ti?p vào NT heap này.
  • Các nư?c s? d?ng m?i, xóa, m?i] , xóa] : Các ch?c năng này đư?c xu?t kh?u b?ng msvcrt.dll và g?i cho m?t trong hai tr?c ti?p ho?c gián ti?p vào NT heap này.
B?t k? khác phân b?/mi?n phí b? ch?c năng r?t có th? là m?t tu? ch?nh Lư?c đ? và không đư?c b?o đ?m đ? g?i ho?c tr?c ti?p ho?c gián ti?p vào NT heap này. Ch? ngu?n m? ki?m tra ho?c ch?y dư?i tr?nh g? l?i có th? ti?t l? các vi?c th?c hi?n th?c t?.

Tránh s? d?ng liên k?t t?nh. M?t s? ?ng d?ng đ? đư?c liên k?t t?nh đ?n c? phiên b?n c?a c runtime. Các c? các phiên b?n không g?i Windows NT đ?ng API, và Pageheap.exe không th? đư?c s? d?ng đ? xác minh nh?ng phân b?. Liên k?t năng đ?ng, đ?m b?o r?ng b?n nh?n đư?c m?i nh?t c thư vi?n runtime (msvcrt.dll).

Các l?p h?c c?a các l?i đư?c t?m th?y b?i Pageheap.exe

Pageheap.exe phát hi?n h?u h?t liên quan đ?n đ?ng l?i; Tuy nhiên, nó là t?p trung vào v?n đ? tham nh?ng heap này và không t?p trung vào r? r?. Pageheap.exe có thành công h?n ch? v?i vi?c t?m ki?m r? r? b? nh?, m?c dù nó có ch?c năng đ? nh?m m?c tiêu này.

M?t trong nh?ng l?i th? c?a Pageheap.exe là nhi?u l?i đư?c phát hi?n khi chúng x?y ra. Ví d?, ra-c?a-m?t-byte l?i lúc k?t thúc m?t cách năng đ?ng c?p đ?m có th? gây ra m?t truy c?p nhanh vi ph?m. Có vài lo?i l?i mà không th? phát hi?n khi h? x?y ra. Trong nh?ng trư?ng h?p, các báo cáo l?i là b? tr? ho?n cho đ?n khi kh?i gi?i phóng.
  • Con tr? không h?p l? đ?ng: Giao di?n c?p đ?ng t?t c? các Win32 và Windows NT có như là m?t đ?u tiên tham s? con tr? đ? heap nơi các ho?t đ?ng nên x?y ra. Trang đ?ng qu?n l? phát hi?n m?t con tr? không h?p l? đ?ng hi?n nay g?i là th?c hi?n.
  • Con tr? không h?p l? đ?ng kh?i: Sau khi m?t kh?i đư?c c?p phát, nó có th? đư?c s? d?ng như m?t tham s? cho m?t s? heap giao di?n, đáng chú ? là free() l?p giao di?n. Heap trang ngư?i qu?n l? ngay l?p t?c phát hi?n m?t con tr? kh?i heap này không h?p l?. Xem g? l?i trang Đ?ng th?t b?i cho m?t cách đ? xác đ?nh n?u đ?a ch? không h?p l? là m?t vài byte off, ho?c là hoàn toàn không chính xác.
  • Multithreaded ví truy c?p heap: Các ?ng d?ng m?t s? g?i thành m?t đ?ng t? nhi?u ch? đ?. Đi?u này lo?i c?a k?ch b?n yêu c?u thi?t l?p m?t c? (b?i ngư?i s? d?ng) mà s? kích ho?t có đư?c m?t khóa heap này. Ngư?i qu?n l? đ?ng trang s? phát hi?n lo?i vi ph?m khi hai đ? c? g?ng g?i đ?ng th?i thành đ?ng này.
  • Các gi? đ?nh v? reallocation c?a m?t kh?i t?i cùng m?t đ?a ch?: M?t ho?t đ?ng reallocation không đư?c b?o đ?m đ? tr? v? cùng m?t Đ?a ch?. Đi?u này đ?c bi?t đúng khi reallocation làm gi?m kích thư?c c?a các kh?i. M?t s? ?ng d?ng gi? đ?nh r?ng reallocation s? tr? l?i cùng m?t đ?a ch?. Ngư?i qu?n l? đ?ng trang luôn luôn phân b? m?t kh?i m?i trong m?t reallocation và gi?i phóng kh?i c?. Kh?i mi?n phí b?o v? cho đ?c/ghi truy c?p, và do đó b?t k? quy?n truy c?p vào nó s? nâng cao m?t s? vi ph?m truy c?p.
  • Đôi mi?n phí: L?i này, nơi mà cùng m?t đ?ng kh?i đư?c gi?i thoát nhi?u l?n, là ph? bi?n trong m?t s? ?ng d?ng. Đi?u này đư?c phát hi?n ngay l?p t?c b?i heap trang qu?n l? b?i v?, ngày th? hai mi?n phí, kh?i s? không có ti?n t? thích h?p tiêu đ? và không th? đư?c t?m th?y trong s? các kh?i đư?c phân b?. Xem g? l?i trang Heap Th?t b?i cho cách đ? phân tích ch?ng d?u v?t c?a các ho?t đ?ng mi?n phí đ?u tiên. Đi?u này l?i có th? là m?t bi?n th? c?a v?n đ? reallocation b?i v?, khi các ?ng d?ng gi?i phóng nh?ng g? nó ngh? r?ng nó là đ?a ch? c?a kh?i, đó kh?i đ? gi?i phóng như m?t ph?n c?a reallocation.
  • Truy c?p c?a kh?i sau khi mi?n phí: B? nh? t? do kh?i đư?c lưu gi? trong m?t th?i gian ng?n b?i heap trang qu?n l? trong m?t h? bơi đư?c b?o v? b? nh?. B?t k? quy?n truy c?p vào nh?ng kh?i s? nâng cao m?t vi ph?m truy c?p. D?a trên nguyên t?c "đ?a phương", h?u h?t các v?n đ? nên đư?c đánh b?t n?u b?o v? bơi mi?n phí là đ? l?n. N?u kh?i t? do là v?n c?n trong các h? bơi đư?c b?o v?, l?i b? b?t ngay l?p t?c. Tuy nhiên, n?u các b? nh? đư?c tái s? d?ng, sau đó có r?t ít cơ h?i c?a vi?c t?m ki?m l?i ho?c xác đ?nh M? s? đó gây ra nó.
  • Truy c?p sau khi vào cu?i c?p kh?i: Ngư?i qu?n l? đ?ng trang nơi m?t trang không t?m th?y ngay l?p t?c sau kh?i đư?c phân b?. B?t k? truy c?p qua cu?i kh?i s? nâng cao m?t s? vi ph?m truy c?p. M?t s? ?ng d?ng mong đ?i phân b? là 8-byte liên k?t. Tính năng này đ? đư?c h? tr? t? Windows NT 3.5 đ?ng qu?n l?. M?t yêu c?u Kích thư?c không ph?i là 8-byte aligned v?n s? nh?n đư?c m?t đ?a ch? liên k?t 8-byte, nhưng Đi?u này lá m?t vài byte sau khi k?t thúc ch?n mà v?n có th? truy c?p. N?u ?ng d?ng corrupts ch? nh?ng vài byte, sau đó l?i s? đư?c đánh b?t ch? b?ng cách ki?m tra Hoa văn h?u t? kh?i khi kh?i gi?i phóng.
  • Truy c?p trư?c khi b?t đ?u đư?c phân b? kh?i: Ngư?i qu?n l? đ?ng trang có th? đư?c hư?ng d?n thông qua m?t lá c? settable đ?t không th? ti?p c?n trang đ?u c?a kh?i, ch? không ph?i là lúc K?t thúc. B?t k? truy c?p trư?c khi b?t đ?u kh?i s? nâng cao m?t ngư?i truy c?p vi ph?m.
Thu g?n b?ng nàyBung r?ng b?ng này
Th?t b?iB?nh thư?ng trang đ?ngFull-trang đ?ng
Con tr? không h?p l? đ?ngĐánh b?t ngay l?p t?cB?t g?p ngay l?p t?c
Con tr? không h?p l? đ?ng kh?iB?t g?p ngay l?p t?cĐánh b?t ngay l?p t?c
Truy c?p víĐánh b?t ngay l?p t?cB?t g?p ngay l?p t?c
Gi? đ?nh v? đ?a ch? reallocation90% cho đ?n b?t mi?n phí90% đánh b?t ngay l?p t?c
Đôi mi?n phí90% đánh b?t ngay l?p t?c90% b?t g?p ngay l?p t?c
Tái s? d?ng sau khi mi?n phí90% cho đ?n khi th?c s? mi?n phí90 % đánh b?t ngay l?p t?c
Truy c?p sau khi k?t thúc c?a kh?iB?t g?p khi mi?n phíĐánh b?t ngay l?p t?c
Truy c?p trư?c khi b?t đ?u c?a kh?iB?t g?p khi mi?n phíĐánh b?t ngay l?p t?c (đ?c bi?t c?)

G? l?i trang Heap th?t b?i

Đ? bi?t thêm chi ti?t v? g? l?i trang Heap th?t b?i, h?y t?m t?i ?ng d?ng tương thích Tookit tham kh?o có s?n bên trong c?a tính tương thích ?ng d?ng B? công c?.

Đ?i v?i các Cú pháp c?a Pageheap.exe và Ví d? s? d?ng Pageheap.exe, xin vui l?ng xem xét ?ng d?ng tương thích Tookit tham kh?o có s?n bên trong c?a tính tương thích ?ng d?ng B? công c?.

Đ? bi?t thêm chi ti?t xin vui l?ng xem dư?i đây Bài vi?t cơ s? ki?n th?c Microsoft:
294895 Làm th? nào đ? có đư?c Windows Application Compatibility Toolkit

Thu?c tính

ID c?a bài: 286470 - L?n xem xét sau cùng: 23 Tháng Tám 2011 - Xem xét l?i: 2.0
Áp d?ng
  • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
  • Microsoft Windows XP Professional
  • Microsoft Windows XP Home Edition
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
T? khóa: 
kbenv kbinfo kbmt KB286470 KbMtvi
Máy d?ch
QUAN TRỌNG: Bài vi?t này đư?c d?ch b?ng ph?n m?m d?ch máy c?a Microsoft ch? không ph?i do con ngư?i d?ch. Microsoft cung c?p các bài vi?t do con ngư?i d?ch và c? các bài vi?t do máy d?ch đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng ngôn ng? c?a b?n. Tuy nhiên, bài vi?t do máy d?ch không ph?i lúc nào c?ng hoàn h?o. Lo?i bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, gi?ng như m?t ngư?i nư?c ngoài có th? m?c sai sót khi nói ngôn ng? c?a b?n. Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra. Microsoft c?ng thư?ng xuyên c?p nh?t ph?n m?m d?ch máy này.
Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này:286470

Cung cấp Phản hồi

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com