Tôi đang cố gắng tìm ra dung lượng bộ nhớ mà ứng dụng của tôi đang tiêu thụ trong chính chương trình đó. Việc sử dụng bộ nhớ mà tôi đang tìm kiếm là số được báo cáo trong cột "Mem Usage" trên tab Processes của Windows Task Manager.Cách sử dụng bộ nhớ trong Windows trong C++
Trả lời
Điểm khởi đầu tốt sẽ là GetProcessMemoryInfo, báo cáo nhiều thông tin bộ nhớ khác nhau về quy trình được chỉ định. Bạn có thể vượt qua GetCurrentProcess()
làm quy trình xử lý để nhận thông tin về quy trình gọi điện.
Có thể là WorkingSetSize
thành viên của PROCESS_MEMORY_COUNTERS
là trận đấu gần nhất với Bộ nhớ sử dụng coulmn trong trình quản lý tác vụ, nhưng sẽ không chính xác như cũ. Tôi sẽ thử nghiệm với các giá trị khác nhau để tìm ra giá trị gần nhất với nhu cầu của bạn.
GetProcessMemoryInfo là hàm bạn đang tìm kiếm. Các tài liệu trên MSDN sẽ chỉ cho bạn đi đúng hướng. Nhận thông tin bạn muốn ra khỏi cấu trúc PROCESS_MEMORY_COUNTERS mà bạn đã nhập.
Bạn cần bao gồm psapi.h.
Hãy thử xem GetProcessMemoryInfo. Tôi đã không sử dụng nó, nhưng nó trông giống như những gì bạn cần.
Tôi nghĩ rằng đây là những gì bạn đang tìm kiếm:
#include<windows.h>
#include<stdio.h>
#include<tchar.h>
// Use to convert bytes to MB
#define DIV 1048576
// Use to convert bytes to MB
//#define DIV 1024
// Specify the width of the field in which to print the numbers.
// The asterisk in the format specifier "%*I64d" takes an integer
// argument and uses it to pad and right justify the number.
#define WIDTH 7
void _tmain()
{
MEMORYSTATUSEX statex;
statex.dwLength = sizeof (statex);
GlobalMemoryStatusEx (&statex);
_tprintf (TEXT("There is %*ld percent of memory in use.\n"),WIDTH, statex.dwMemoryLoad);
_tprintf (TEXT("There are %*I64d total Mbytes of physical memory.\n"),WIDTH,statex.ullTotalPhys/DIV);
_tprintf (TEXT("There are %*I64d free Mbytes of physical memory.\n"),WIDTH, statex.ullAvailPhys/DIV);
_tprintf (TEXT("There are %*I64d total Mbytes of paging file.\n"),WIDTH, statex.ullTotalPageFile/DIV);
_tprintf (TEXT("There are %*I64d free Mbytes of paging file.\n"),WIDTH, statex.ullAvailPageFile/DIV);
_tprintf (TEXT("There are %*I64d total Mbytes of virtual memory.\n"),WIDTH, statex.ullTotalVirtual/DIV);
_tprintf (TEXT("There are %*I64d free Mbytes of virtual memory.\n"),WIDTH, statex.ullAvailVirtual/DIV);
_tprintf (TEXT("There are %*I64d free Mbytes of extended memory.\n"),WIDTH, statex.ullAvailExtendedVirtual/DIV);
}
Để bổ sung cho câu trả lời của Ronin, indead chức năng GlobalMemoryStatusEx
cung cấp cho bạn các quầy thích hợp để lấy được sử dụng bộ nhớ ảo cho quá trình gọi điện thoại: chỉ cần trừ đi ullAvailVirtual
từ ullTotalVirtual
để nhận bộ nhớ ảo được cấp phát. Bạn có thể kiểm tra điều này cho bản thân bằng cách sử dụng ProcessExplorer hoặc một cái gì đó.
Thật khó hiểu khi hệ thống gọi GlobalMemoryStatusEx
không may có mục đích hỗn hợp: nó cung cấp cả thông tin toàn hệ thống và quy trình cụ thể, ví dụ: thông tin bộ nhớ ảo.
- 1. Sử dụng bộ nhớ máy tính trong Windows bằng Python
- 2. Cách biết mức sử dụng bộ nhớ trong C++
- 3. Sử dụng bộ nhớ C#
- 4. Đếm bộ vi xử lý sử dụng C++ trong Windows
- 5. Delphi: sử dụng TClientDataset làm bộ nhớ trong bộ nhớ
- 6. Mô phỏng bộ nhớ thấp bằng cách sử dụng C++
- 7. sử dụng bộ nhớ trong R
- 8. C# Windows CE .net 3.5 để kiểm tra mức sử dụng bộ nhớ
- 9. Cách Cross-Platform để sử dụng CPU/Bộ nhớ
- 10. cách phân bổ bộ nhớ đúng trong C++ trong điều kiện bộ nhớ thấp
- 11. Phân bổ bộ nhớ tĩnh trong bộ nhớ cache CPU trong c/C++: có thể không?
- 12. Giới hạn sử dụng bộ nhớ C/C++ một cách giả tạo
- 13. Sử dụng bộ nhớ video OpenGL
- 14. C - tạo tập tin trong bộ nhớ
- 15. Sử dụng bộ nhớ cache trong ma trận chuyển đổi trong c
- 16. C++ - Phân bổ bộ nhớ trên heap sử dụng "mới"
- 17. Làm cách nào để giải phóng bộ nhớ trong C?
- 18. Hệ thống tệp trong bộ nhớ cho WIndows
- 19. In byte từ bộ nhớ trong C
- 20. C# Nhận bộ nhớ đã sử dụng ở%
- 21. Con trỏ C++ sử dụng bao nhiêu bộ nhớ?
- 22. Hết bộ nhớ ngoại lệ trong C#
- 23. Rò rỉ bộ nhớ Sử dụng JSON-C
- 24. C# Từ điển và Sử dụng Bộ nhớ Hiệu quả
- 25. Giám sát các tệp ánh xạ bộ nhớ trong Windows
- 26. Thăm dò sử dụng bộ nhớ của ứng dụng C# trong thời gian chạy?
- 27. Hẹn giờ tăng mức sử dụng bộ nhớ trong ứng dụng C#
- 28. Cách lấy Bộ nhớ được Chương trình Delphi sử dụng
- 29. Sử dụng cpp-netlib trong dự án C++ trong Windows
- 30. Làm cách nào để đo mức sử dụng băng thông bộ nhớ trên Windows?
Nó có lẽ không phải là những gì ông muốn biết, như bộ nhớ hệ thống đo lường này được sử dụng, không phải bộ nhớ được tiêu thụ bởi một quá trình riêng lẻ. Tuy nhiên nó có thể hữu ích để biết quá, vì vậy tôi sẽ không đánh dấu xuống nó. – CashCow
Nguồn: http://msdn.microsoft.com/en-us/library/windows/desktop/aa366589%28v=vs.85%29.aspx – user956584
Đây không phải là câu hỏi về, có thể hữu ích nói chung. –