[問題] 動態陣列輸入某臨界值會main.exe停止運作

看板C_and_CPP (C/C++)作者 (達)時間12年前 (2014/01/24 03:37), 編輯推噓2(201)
留言3則, 3人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Win7的Codeblocks 問題(Question): 給一個整數,列出範圍內的質數,然後計算質數的個數 使用動態陣列的寫法 很神奇的是 n如果輸入在22和以內,正常 但n如果超過22,即23、24... 雖然也可以正確執行 但就是會多跑出一個「main.exe已經停止運作」的提示訊息 #include <stdio.h> #include <stdlib.h> int main() { int n,i,j,k; int count=0; printf("請輸入一個整數:"); scanf("%d", &n); printf("\n"); int *array; // 設定陣列型態。 array =(int*)malloc(count*sizeof(int));// 配置一維陣列 for(i=2; i<=n; i++) { for(j=2; j<=sqrt(i); j++) { if(i%j==0) break; } if(j==(floor(sqrt(i))+1)) { array[count]=i; count++; } } printf("從1到%d之間的質數有:\n",n); for(k=0; k<count; k++) printf("%d ",*(array+k)); printf("\n\n"); printf("質數共有%d個\n",count); } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.163.106.192

01/24 03:51, , 1F
array =(int*)malloc(count*sizeof(int)); 這行
01/24 03:51, 1F

01/24 04:34, , 2F
malloc count應為n
01/24 04:34, 2F

01/24 12:46, , 3F
養成好習慣 動態陣列要釋放free()
01/24 12:46, 3F
文章代碼(AID): #1IuMzuyy (C_and_CPP)
文章代碼(AID): #1IuMzuyy (C_and_CPP)