作者james732 (好人超)
看板C_and_CPP
標題Re: [問題] segmentation fault
時間Sat May 29 11:42:39 2010
「錯誤」至少可以分成兩種
一種是「執行前」就可以抓到的,一種是「執行時」才能抓到的
Compiler 只能「盡量」幫你抓出「執行前」就能發現的錯誤
struct Stock
{
int StockCode;
char *StockName;
int gain;
};
int main()
{
FILE *read;
read=fopen("input.txt","r");
vector<Stock*> Data;
Stock *temp;
temp=(Stock*)malloc(sizeof(Stock));
int a,b,c;
for (int i=1;i<=20;i++)
{
fscanf(read,"%d",&temp->StockCode);
fscanf(read,"%s",temp->StockName);
雖然你有配置 Stock *temp 的空間,但沒配置 temp->StockName 的空間
這個 char * 指向的空間沒有人知道是哪裡,這樣的程式一定會有問題
你的錯誤跟這樣的意思差不多:
char *str;
scanf("%s", str);
大家都說 C/C++ 的指標很難搞,就是因為這種錯誤,Compiler沒辦法負責
(Compiler怎麼知道你指的地方到底是不是有效的位置?)
只能由設計者自己小心了
最後,相較於 Dev-C++,我個人會比較推薦 Microsoft Visual C++ Express
google 找一下就會有網址了
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.117.171.46
推 lO:恩恩 程式沒有問題了 感謝^^ 05/29 11:57
推 hilorrk:好人超你是好人>.^ 05/29 12:02
→ final01:GCC ? 05/29 13:54
→ operationcow:Dev-C++ 就是 Mingw port of GCC吧 05/29 17:44
推 loveflames:因為Dev-C++停止更新了? 05/29 18:33
推 Arim:這跟IDE沒關係吧 05/31 13:28