小编Sum*_*aik的帖子

realloc释放现有的内存?

我试图在下面的程序中使用realloc重新分配内存,并在realloc初始内存后检查我使用malloc(i =(int*)malloc(5*sizeof(int)))仍然存在与否,使用下面的程序我能够在使用另一个指针(即*m)检查的realoc之后访问数据.这是正确的行为吗?一旦realloc调用,内存应该是免费的吗?

    #include <stdio.h>
    #include <stdlib.h>

    int main()
    {
       int *i,*jn, *m;
       i = (int*)malloc(5 * sizeof(int));
       int j,k=10;

      for(j=0 ;j<5; j++)
      {
         i[j] = j;
         printf("%d \n",i[j]);
      }

      for(j=0 ;j<5; j++)
      {
        printf("%p\n",i++);
      }

      jn = (int *)calloc(5, sizeof(*i));

      for(j=0 ;j<5; j++)
      {
         printf("%p\n",jn++);
      }

       i = i-5;
       m = i;

      printf("m = %p  %d\n",(m+1), *(m+1));

      i =(int *)realloc(i,8*sizeof(int));

      for(j=0 ;j<8; j++)
      {

         printf("%d\n",i[j]);
      }

      for(j=0 ;j<8; j++)
      {

        printf("%p\n",i++);
      }
      printf("m = %p  %d\n",(m+1), *(m+1));

      return 0;
}
Run Code Online (Sandbox Code Playgroud)

c pointers

2
推荐指数
2
解决办法
1474
查看次数

标签 统计

c ×1

pointers ×1