C 如何修复.exe停止工作错误?

C 如何修复.exe停止工作错误?,c,C,您好。我正在尝试将素数1打印到输入中,但我最多可以获得16的输入。当我获得的输入超过16时,我将获得exe错误 #包括 #包括 int main() { 文件*sayilar; int*dizi; dizi=(int*)malloc(sizeof(dizi)); int-dizi_指数=0; int i,j; printf(“ASAL SAYI BULMA计划”); 输入_tekrar: printf(“Lutfen hangi sayiya kadar asal sayi bulmak ist

您好。我正在尝试将素数1打印到输入中,但我最多可以获得16的输入。当我获得的输入超过16时,我将获得exe错误

#包括
#包括
int main()
{
文件*sayilar;
int*dizi;
dizi=(int*)malloc(sizeof(dizi));
int-dizi_指数=0;
int i,j;
printf(“ASAL SAYI BULMA计划”);
输入_tekrar:
printf(“Lutfen hangi sayiya kadar asal sayi bulmak istedigizii yaziniz:”);
int输入;
scanf(“%d”,输入(&I));

if(input我猜您需要一个存储素数的数组
dizi

dizi=(int*)malloc(sizeof(dizi));
分配一个大小为
sizeof(dizi)
dizi
是指针的缓冲区,因此它的大小可能是4或8,这取决于您的操作系统或编译的体系结构(32位或64位)。无论如何,这都不是您想要的

问题发生在这一行

*(dizi+dizi_index)=i;
在这里,您正在访问尚未分配给
dizi
的内存,因此您得到了一个内存错误。
要解决这个问题,请为
dizi
分配足够的内存,比如说
input
number of
int
s,因为从1到n的素数保证小于n。

这看起来是错误的:
dizi=(int*)malloc(sizeof(dizi));
你的意思可能是
dizi=(int*)malloc(sizeof)吗(*dizi));
dizi=(int*)malloc(n*sizeof(*dizi));
*(dizi+dizi_index)=i;