Dynamic 动态内存中的新功能。realloc();

Dynamic 动态内存中的新功能。realloc();,dynamic,realloc,Dynamic,Realloc,我现在正在努力学习,但是发给我的文件不正确。我试着修复了一些东西,但它开始了,然后就碎了。我在学习动态记忆,所以我不知道。下面是realloc()的代码 #包括/*printf、scanf、NULL*/ #包括/*malloc、free、rand*/ int main() { int计数=0,i; int*stations=NULL,*ptrToStations=NULL; 对于(i=1;i您在这里遇到了几个问题 最后,重复释放相同的内存块 计数应该从1开始。在第一次迭代中,您尝试更改内存块大小

我现在正在努力学习,但是发给我的文件不正确。我试着修复了一些东西,但它开始了,然后就碎了。我在学习动态记忆,所以我不知道。下面是realloc()的代码

#包括/*printf、scanf、NULL*/
#包括/*malloc、free、rand*/
int main()
{
int计数=0,i;
int*stations=NULL,*ptrToStations=NULL;

对于(i=1;i您在这里遇到了几个问题

  • 最后,重复释放相同的内存块
  • 计数应该从1开始。在第一次迭代中,您尝试更改内存块大小为0字节
  • 数组外界错误 ptr站[计数]=i
  • 您的代码实际上应该是这样的

    #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;
    
    }
    
    #包括/*printf、scanf、NULL*/
    #包括/*malloc、free、rand*/
    int main()
    {
    int计数=1,i;
    int*stations=NULL,*ptrToStations=NULL;
    
    对于(i=1;iCode注释应为英语)
    #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;
    
    }