2016-03-29 26 views
0

Şu anda eğitim çalışıyorum ama bana gönderilen dosya doğru değil. Denedim birkaç şey düzeltmek ama başlıyor ve hemen sonra eziyor. Dinamik hafıza öğreniyorum, o yüzden bilmiyorum. İşte realloc() için kod;Dinamik bellekte yeni. realloc();

#include <stdio.h> /* printf, scanf, NULL */ 

    #include <stdlib.h> /* malloc, free, rand */ 

    int main() 

{ 

int count=0,i; 

int *stations=NULL,*ptrToStations=NULL; 



for(i=1;i<=7;i++,count++) 
    { 

ptrToStations=(int*)realloc(stations,count*sizeof(int)); 

if(ptrToStations!=NULL)//заделили сме памет 

{ stations = ptrToStations; 

ptrToStations[count]=i;} 

    } 

for(i=0;i<7;i++) 

printf("%d",stations[i]); 

printf("\n"); 



//добавяне на 8 елемент 

ptrToStations=(int*)realloc(stations,++count*sizeof(int)); 

if(ptrToStations!=NULL)//заделили сме памет 

{ stations = ptrToStations; 

ptrToStations [count-1]=count;} 



for(i=0;i<count;i++) 

printf("%d",stations[i]); 

printf("\n"); 

int x=3; 

//преместваме елементите с един назад 

for(i=x;i<count;i++) 


ptrToStations[i-1]=ptrToStations[i]; 

//премахване на 8 елемент 

ptrToStations=(int*)realloc(stations,--count*sizeof(int)); 

if(ptrToStations!=NULL)//заделили сме памет 



stations = ptrToStations; 



for(i=0;i<count;i++) 


printf("%d",stations[i]); 

printf("\n"); 


free (ptrToStations); 

free (stations); 

return 0; 

} 
+0

Kod yorumları gibi görünmelidir –

cevap

0

Sen oldu çok sorun burada

  • sayımı birinci tekrar 1. overwise ile başlamalıdır sonunda aynı bellek öbek serbest

    1. çift sen boyutunu değiştirmek için denemek 0 baytlık bellek bloğu
    2. dizi dışı hata hatası ptrToStations [count] = i;

    Kodunuz aslında İngilizce olmalıdır bu

    #include <stdio.h> /* printf, scanf, NULL */ 
    
        #include <stdlib.h> /* malloc, free, rand */ 
    
        int main() 
    
    { 
    
    int count=1,i; 
    
    int *stations=NULL,*ptrToStations=NULL; 
    
    
    
    for(i=1;i<=7;i++,count++){ 
    
        ptrToStations=(int*)realloc(stations,count*sizeof(int)); 
    
        if(ptrToStations != NULL) { 
         stations = ptrToStations; 
         ptrToStations[count-1]=i; 
         for(i=0;i<count;i++) 
          printf("%d",stations[i]); 
         printf("\n"); 
        } 
    } 
    
    
    
    
    
    //добавяне на 8 елемент 
    
    ptrToStations=(int*)realloc(stations,++count*sizeof(int)); 
    
    if(ptrToStations!=NULL){ 
        stations = ptrToStations; 
        ptrToStations [count-1]=count; 
        } 
    
    
    
    for(i=0;i<count;i++) 
        printf("%d",stations[i]); 
    printf("\n"); 
    
    int x=3; 
    
    //преместваме елементите с един назад 
    
    for(i=x;i<count;i++) 
        ptrToStations[i-1]=ptrToStations[i]; 
    
    //премахване на 8 елемент 
    
    ptrToStations=(int*)realloc(stations,--count*sizeof(int)); 
    
    if(ptrToStations!=NULL) { 
        stations = ptrToStations; 
        for(i=0;i<count;i++) 
         printf("%d",stations[i]); 
    printf("\n"); 
    } 
    
    
    free (stations); 
    
    return 0; 
    
    } 
    
  • İlgili konular