Valgrind đang phàn nàn với lời gọi nền.Lý do cho lỗi Valgrind này là gì?
string Message::nextField(string& input) {
int posSeparator = input.find_first_of(SEPARATOR);
string temp;
temp = input.substr(0, posSeparator); //Error points to this line
input.erase(0, posSeparator + 1);
return temp;
}
Các lỗi đi:
290 byte trong 12 khối chắc chắn bị mất trong lỗ kỷ lục 1 của 1
gì chức năng thực hiện được về cơ bản phân tích đầu vào, trở về các phần của chuỗi phân cách bằng vật SEPARATOR. Hàm này được gọi từ phương thức của lớp khác với định nghĩa tiếp theo:
void doSomething(string input) {
input.erase(0,2);
string temp = nextField(input);
this->room = atoi(temp.c_str());
temp = input;
this->money = atoi(temp.c_str());
}
Không có gì khác lạ hoặc đủ quan trọng để được đưa vào đây. Tôi sử dụng thiết lập mặc định cho Valgrind từ lược tả Valgrind của Eclipse Indigo. Bất kỳ ý tưởng nào?
Bạn có tối ưu hóa trong khi biên dịch không? Nếu có thì đừng. Điều này gây ra rất nhiều báo cáo giả mạo từ valgrind. –
Bạn có thể viết 'string temp = input.substr (0, posSeparator);' để khởi tạo chuỗi thay vì gán cho nó. Nó không phải là rõ ràng đó là bất cứ điều gì để làm với vấn đề của bạn, mặc dù. –
@DavidHammen Không, tôi không có. – Erandros