2016-04-29 64 views
-4

我在使用malloc函數的c中創建了一個程序。 代碼:c中的Malloc函數

#include<stdio.h> 
#include<stdbool.h> 
#include<malloc.h> 

int main(){ 
    int n; 
    int *ptr,i,sum; 
    sum = 0; 
    printf("Enter the number = "); 
    scanf("%d",&n); 
    ptr = (int *)(malloc(10)); 
    for(i=0;i<n;i++){ 
     scanf("%d",ptr+i); 
     sum += *(ptr+i); 
    } 
    printf("The sum of the numbers is = %i",sum); 
} 

我已經使用malloc函數。如何是有可能,10點的整數被存儲在10個字節到分配的10個字節的存儲器....

+0

整數通常需要4個字節,並且您正在寫出界限 – Pooya

+2

*「10個整數存儲在10個字節中怎麼可能......」*不是。 –

+1

您必須添加數據類型的大小:'ptr = malloc(sizeof(int)* n);' – jboockmann

回答

1

有可能通過運氣。

您在分配區域之外寫入,因此程序具有UB(未定義行爲)。

但是,該程序可能似乎在某些情況下工作,但通常它可能隨時崩潰。