作者ric2k1 (Ric)
看板EE_DSnP
标题Re: [问题] strtok
时间Sat Dec 8 09:10:46 2007
※ 引述《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