當我寫下面的代碼,我得到奇怪的答案。不能理解爲什麼c中的malloc函數做如下解釋?
#include<stdio.h>
#include<stdlib.h>
main()
{
int *p=malloc(1);
if(p==0)
printf("memory not assigned\n");
else
{
printf("memory assigned\n");
printf("enter an int\t");
scanf("%d",p);
printf("\n You entered number %d",*p);
printf("\nIt has been stored at-%p",p);
}
}
我覺得malloc的參數需要作爲byte.so這裏我輸入的1個字節數和我知道,我的機器上INT需要存儲4個字節(通過的sizeof()),但仍代碼顯示沒有錯誤,我可以輸入一個int value.even如果我輸入3333333它不會抱怨。如果我使用malloc()而不是malloc(1)gcc抱怨malloc的參數太少,但仍然給出相同的結果。我無法理解此行爲。有人請澄清一下。
我正在gcc上運行它通過虛擬框。
「gcc抱怨malloc的參數太少,但仍然給出相同的結果」 - 由於編譯失敗,您的可執行文件沒有被覆蓋,爲什麼它會執行其他任何操作? – 2013-03-01 05:46:48
當我再次運行它並輸入新值時,它很高興地採取了它並沒有抱怨。所以我不認爲以前的可執行文件沒有被覆蓋。 – 2013-03-01 06:17:31
刪除可執行文件並重試。 – congusbongus 2013-03-01 06:57:49