Re: [問題] segmentation fault
「錯誤」至少可以分成兩種
一種是「執行前」就可以抓到的,一種是「執行時」才能抓到的
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
推
05/29 11:57, , 1F
05/29 11:57, 1F
推
05/29 12:02, , 2F
05/29 12:02, 2F
→
05/29 13:54, , 3F
05/29 13:54, 3F
→
05/29 17:44, , 4F
05/29 17:44, 4F
推
05/29 18:33, , 5F
05/29 18:33, 5F
推
05/31 13:28, , 6F
05/31 13:28, 6F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 4 篇):