VALGRIND:大小为8的读取无效

VALGRIND: invalid read of size 8

本文关键字:读取 无效 小为 VALGRIND      更新时间:2023-10-16

我在valgrind、方面有问题

我创建了这个类:

class shop {
    private:
       vector<vector<string> > products_;
    public:
           shop(string ProductFile);
           FindMinPrice(string product);
}
    //method in the cpp file
    vector<string> shop::FindMinPrice(string product){
         string ProductName=(string)products_[0][0];
    }

我没有写完整的代码,但它与GCC编译器配合得很好。当我运行valgrind检查时,它显示:大小为8的无效读取在eclipse中,它会将我发送到ProductName行。

这个设计出了什么问题?以及如何使GCC编译和运行但VALGRIND崩溃?

谢谢。

向量中的products_向量似乎为空,这意味着对元素products_[0][0]的访问是未定义的行为。

未定义行为的不幸之处在于,您的程序可能看起来可以工作,甚至可能在没有任何可见问题的情况下完成。

  1. 在c++中使用c样式转换不是一个好的做法
  2. 您的shop方法不会返回任何值