※ 引述《lionel20002 (~小遙~)》之銘言:
: 寫這樣:
: char *a="I You He She";
: char *i;
: for(i=strtok(a," ");i!=NULL;i=strtok(NULL," "))
: cout<<i<<endl;
: 程式會crash,為什麼?
: 改成a[]就不會了...
啊, 問得很好, 這個問題希望大家能夠搞清楚...
char *a = "...." 中 a is a local pointer variable,
他只佔了 stack memory 4 bytes, 而他所指的 string "..."
仍然是在 fixed memory 之中, 而 fixed memory 的內容是你不能隨意去更動的,
所以會 crash.
至於 char a[] = "..." 則是將 string "copy" 到 local char array 當中,
他所有 string 的記憶體都在 stack memory 裏了,
所以可以 strtok.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.121.134.54