首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VALGRIND:大小为8的无效读取

VALGRIND:大小为8的无效读取
EN

Stack Overflow用户
提问于 2013-11-24 23:36:41
回答 2查看 3K关注 0票数 1

我对瓦兰有意见,

我创建了这个类:

代码语言:javascript
复制
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编译器中工作得很好。当我运行val研检查时,它会显示:大小为8的无效读取,在eclipse中,它将我发送到ProductName行。

这个设计有什么问题?而GCC又是如何编译和运行的,而瓦莱金却崩溃了?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-24 23:40:06

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

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

票数 3
EN

Stack Overflow用户

发布于 2013-11-24 23:44:24

  1. 在c++中使用c风格的强制转换并不是一种好的实践。
  2. 您的商店方法不返回任何值。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20182554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档