Windows坏::在std :: vector push_back上分配

时间:2013-11-21 15:25:15

标签: c++ qt window std eigen

我在linux 64bit中有一个可用的c ++代码,我在QT Windows 32bit(虚拟机)中导出。为此,在我的程序的Windows中创建了一个带有QT的静态库,并将其包含在我的QT GUI中。问题是当我运行GUI时程序崩溃。

结构在其他地方用Eigen :: Vector2d和int定义,没有指针。

我的程序因此错误而崩溃

terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc
Debuggen beendet

这意味着我没有足够的内存,但在我的Windows上我还剩1 GB而且我的程序只需要32MB。

我不知道我能做些什么来解决这个问题?有人有想法吗?

我对此进行了调查,我不理解此函数中的此错误

修改

class B {
    std::vector<A> vec;
    void add(int value, Eigen::Vector2d point);
}
    B::add(int value, Eigen::Vector2d point)
      Class A;
      A.value=value;
      A.point=point;
      vec.push_back(A);
    }


class A{     (only header file)
public:
  int value;
  Eigen::Vector2d point;
}

class C(){
void AddSomethingtoB(B& output)
}

A,B,C类是我的静态库,包含在我的QT项目中。

现在我在主窗口上执行某项操作

   int main(){
    C c_class;
    B b_class;
    c_class.AddSomethingtoB(b_class);
    }

非常有趣的想法,当我这样做时,我可以添加一个元素,之后我的矢量大小为1431655766。

但是当我做的时候

   int main(){
    C c_class;
    B b_class;
    std::cout << "size" << b_class.vec.size() << std::endl;
    c_class.AddSomethingtoB(b_class);
    }

我的程序运行没有任何问题。这里有什么问题?我的“主”可以为我的载体预留足够的空间吗?或者这是一个初始化问题?我不知道

0 个答案:

没有答案