簡體   English   中英

通過指針更改 `std::string` 時出現分段錯誤

[英]Segmentation fault when changing `std::string` in by pointer

我有一個std::string*作為我的類的成員,但是當我嘗試將其值設置為類構造函數中的任何值時,出現segmentation fault (core dumped)

相關代碼部分:

// class declaration:
//...
std::string* _sensorString;
//...


// on class constructor
//...
std::cout << "test "<< std::endl;
*_sensorString="s";
std::cout << *_sensorString<< std::endl;
//...

程序的輸出:

test 
Segmentation fault (core dumped)

是的,很明顯。 std::string*是一個指針,當指針未初始化時給指針賦值會導致分段錯誤。 標准模板庫可以幫助您處理對象,因此您不需要指針。 只需將您的類型聲明為

 std::string _sensorString;

然后你可以用它作為

 _sensorString = "s";

你沒有為對象分配內存,

std::string* _sensorString;

你應該寫

_sensorString = new std::string;

寫之前

*_sensorString="s";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM