2016-04-29 12 views
-4

Ich habe ein Programm in c, die Malloc-Funktion verwendet. Code:Malloc-Funktion in c

#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); 
} 

I malloc-Funktion verwendet haben einen Speicher von 10 Bytes zuzuteilen .Wie es ist möglich, dass 10 Zahlen in 10 Bytes gespeichert werden ....

+0

ganze Zahlen normalerweise 4 Bytes und Sie schreiben außerhalb der Grenzen – Pooya

+2

* "Wie ist es möglich, dass 10 ganze Zahlen in 10 Bytes gespeichert werden ...." * Es ist nicht. –

+1

müssen Sie die Größe des Datentyps hinzufügen: 'ptr = malloc (sizeof (int) * n);' – jboockmann

Antwort

1

Es ist möglich, von Glück.

Sie schreiben außerhalb des zugewiesenen Bereichs und folglich hat Ihr Programm UB (Undefined Behavior).

Allerdings scheint das Programm in einigen Situationen zu funktionieren, aber im Allgemeinen kann es jederzeit abstürzen.