簡體   English   中英

如何檢查內存限制

[英]how to check memory limits

我試圖檢查我的操作系統中的內存限制是否有效。 所以我使用的這是簡單的c程序:

#include <iostream>
#include <cstdlib>

int main()
{
    const size_t GB = 1024 * 1024 * 1024;
    const size_t mem = 1 * GB;
    std::cout << "allocating " << mem << " bytes" << std::endl;
    void* p = malloc(mem);
    if (p) { std::cout << "memory allocated" << std::endl; }
    else { std::cout << "cannot allocate memory" << std::endl; }
    char a;
    std::cin >> a;
    free(p);
}

我正在使用-O0編譯,但是當我查看性能監視器時,我發現我的a.out僅使用128Kb。 為什么我看不到1 GB?

你需要提交內存。 只要您保留它,您就已經分配了“虛擬內存”。 您承諾閱讀或寫入內存。 隨你的程序添加

void* p = malloc(mem);
if (p) { 
    std::cout << "memory allocated" << std::endl;
    memset(p, 0, mem);
} else {
    std::cout << "cannot allocate memory" << std::endl; }

在Windows操作系統中,您可以使用VirtualQuery函數來查看保留了哪些內存塊以及提交的內容。

操作系統只會“使用”您實際觸摸的內存,因此它不會顯示在性能監視器上或類似於除非您實際“使用”內存的情況。 這是因為一些應用程序“以防萬一”分配大量內存,並且實際上它沒有被使用時,實際上將該內存填充到進程中需要花費很多額外的時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM