簡體   English   中英

顯示已分配的內存量

[英]Displaying the amount of memory allocated

嗨,我正在寫一些測試資料,以查看分配的內存量正確顯示

在Windows TasK管理器中。 下面是代碼;

int main(int argc,char* argv[])
{
 struct stat st;
 char commandXCopy[200];
 char commandDelete[200];

 char *fNames[2^16];
 int i =0;
    char *ptr = (char *)malloc(sizeof(char) * 2^32);
     printf("\nTEST");

    if(!ptr)
            printf("\nCan not allocate");
    else
            printf("\nMemory allocate");


     while(1==1)
     {
     };

我嘗試從堆棧和堆中進行大量分配。 但是我在任務管理器->進程上看到的只有〜800K。

而且我也沒有看到“無法分配”消息。

我有Windows 32位XP Pro,並使用gcc,應用程序是dos應用程序。

gcc test.c

問候

我認為您可能會受到誤解: 2^32 不是 2 32 (4G,假設您的字節長為8位,我將為此答案使用它)在C語言中。

^是按位XOR運算符。 因此,您實際分配的是:

     binary        hex     decimal
    ---------      ----    -------
    0010 0000      0x20      32
xor 0000 0010      0x02       2
    =========
    0010 0010      0x22      34

或34個字節。 同樣, 2^31會給您29個字節,因此您可能認為2G的差異(2 32-2 31 )實際上只有5個字節。

如果要使用C進行處理,則應查看pow()函數,但我懷疑您將能夠獲得4G的內存(也許在64位OS上,但即使這樣,也很多)。

還有另一件事: sizeof(char) 始終為 1-無需乘以它。

暫無
暫無

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

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