我現在的方法,如下:
1
DWORD GetUsedMemory(DWORD pID)
2

{
3
DWORD memUsage = 0;
4
HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPHEAPLIST, pID);
5
if (INVALID_HANDLE_VALUE != hSnapShot)
6
{
7
HEAPLIST32 heapList;
8
heapList.dwSize = sizeof(HEAPLIST32);
9
BOOL bOk = Heap32ListFirst(hSnapShot, &heapList);
10
for (; bOk; bOk = Heap32ListNext(hSnapShot, &heapList))
11
{
12
HEAPENTRY32 he;
13
he.dwSize = sizeof(HEAPENTRY32);
14
BOOL fOK = Heap32First(hSnapShot, &he, pID, heapList.th32HeapID);
15
for(; fOK; fOK = Heap32Next(hSnapShot, &he))
16
{
17
memUsage += he.dwBlockSize;
18
}
19
}
20
21
22
23
// 關閉快照句柄
24
CloseToolhelp32Snapshot(hSnapShot);
25
}
26
27
return memUsage;
28
29
}

2



3

4

5

6



7

8

9

10

11



12

13

14

15

16



17

18

19

20

21

22

23

24

25

26

27

28

29

以上的這個方法與實際有出入。
有沒有更好的辦法呢?希望研究過的和正在研究的人,或者感興趣的人,能夠指點一二,讓我能夠走出困惑。