[英]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.