說我在一類C++指針使用它之前deferenced
const char* info;
bool machine::ping(){
if(info[0] == '\0'){
printf("%s", "null");
}
else{
printf("%s",info); <---------- This does NOT print out what I expect. :(
}
}
bool machine::RecvNotify(const Data& aData){
info = aData.path();
printf("%s",info); <------- This works well and prints out what I expect
}
我想我不能定義這個變量這樣定義的變量。請讓我知道是否有什麼我應該改變。謝謝
'info'指向任何'aData'指向的存儲區。可能錯誤是因爲在調用'machine :: ping()'之前,該對象被銷燬了。相反,你應該使用'std :: string info;' – 2014-08-28 06:16:50
同意,你會介意爲什麼sdt :: string info可以在調用ping()函數之前避免被殺死? – Sam 2014-08-28 06:23:31
'std :: string'存儲一個字符串;如果它是'machine'類的成員,那麼只要包含它的對象存在,它仍然存在。 'char const * info'不存儲字符串;它指向程序的其他部分存儲字符串的位置。 – 2014-08-28 06:24:30