Это моя функция:
string GaugeStr;
void someFunction() {
float pie = someFloat();
stringstream ss (stringstream::in | stringstream::out);
ss << pie;
GaugeStr = ss.str();
}
Когда я запускаю функцию, она работает правильно.Однако, когда я вызываю его во второй раз (someFunction(); someFunction();
), моя программа падает с ошибкой сегментации.
Я попытался вывести stringstream ss (stringstream::in | stringstream::out);
из функции, чтобы сделать ее глобальной переменной, но содержимое яхотите отправить в GaugeStr
и добавить в ss
. Например, если мы предположим, что someFloat()
всегда возвращает 1,2, то во второй раз, когда я запускаю функцию, GaugeStr
устанавливается на 1.21.2
.
Итак, я вставил ss.str("")
в функцию, но программа снова вылетает с ошибкой.
Что я могу сделать, чтобы значение someFloat()
было GaugeStr
в виде строки безsegfault?
Точная функция
void CPU_BenchmarkFrame::OnButton1Click(wxCommandEvent& event) {
float pie = PiAlgo (Gauge2);
stringstream ss (stringstream::in | stringstream::out);
ss << pie;
wxMessageBox(_("Alert"), _("Sample Alert")); //To test where the segfault happens
string GaugeStr = ss.str();
wstring GaugeWid;
std::copy(GaugeStr.begin(), GaugeStr.end(), GaugeWid.begin());
StaticText2->SetLabel(GaugeWid);
}
Еще больше правок
Проблема в том, что здесь одна или несколько строк:
wstring GaugeWid;
std::copy(GaugeStr.begin(), GaugeStr.end(), GaugeWid.begin());
StaticText2->SetLabel(GaugeWid);
, когда я их комментировалскрипт работал нормально.