[英]C++ string: Invalid pointer error
當我調用下面的函數時,我收到一個無效的指針錯誤。 為什么會這樣呢?
void Get(const char* value)
{
string st("testing string");
string val = st.substr(1, st.length());
value = val.c_str();
}
int main()
{
const char *val = NULL;
GetVal(val);
cout<<val;
}
目的是返回子字符串。
一旦Get()
返回, Get()
val
變量將被銷毀,因此指向val
主體的指針無效。 另外, value
參數是原始指針的副本,因此main()
函數中的原始val
指針保持不變,並且仍保留空指針值。
更改為
string Get()
{
string st("testing string");
string val = st.substr(1, st.length());
return val;
}
我看到兩個錯誤:
val.c_str()
的指針是本地GetVal()
; val
在GetVal()
的末尾銷毀,因此指針值無論如何都是無效的。 最好使用std::string
。
string Get()
{
string st("testing string");
return st.substr(0, st.length()/2);//returning substring
}
string s = Get();
順便說一句,您現在想閱讀的一篇有趣的文章(由Herb Sutter撰寫)是:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.