没有在c语言中分配,访问内存空间是否有任何问题

Siv*_*ran -3 c memory-management


#include<stio.h>
main()
{
  int *p,i;
  p = (int*)malloc(sizeof(int));
  printf("Enter:");
  scanf("%d",p);
  for(i=1;i<3;i++)
  {
   printf("Enter");
   scanf("%d",p+i);
  }

  for(i=0;i<3;i++)
  {
    printf("No:%d\n",*(p+i));
  }
  getch();
  return 0;
}

在这个C程序中,内存是在没有分配的情况下访问的.程序工作.如果没有分配就访问内存会出现什么问题?如果是,那么存储大小未提前知道的整数数据集合的解决方案是什么?

Nav*_*een 8

是的,它会导致未定义的行为.这个问题这里纯粹是因为运气而且可能会随时崩溃.解决方案是使用分配内存malloc.例如,如果要为count多个元素分配内存,则可以使用int* p = (int*)malloc(sizeof(int)*count);.从这里开始,您可以访问p一系列count元素.

  • 而且我会说它运气不好**它似乎有效.早期,大声地崩溃,并且经常像我的导师所说的那样. (4认同)