无论出于何种原因,我最终得到的代码看起来像这样
typedef std::vector<double> Vector;
void f(Vector const& v) {
Vector const* p;
p = &v;
}
bad_alloc
这会在分配点引发异常。为什么?f
在非强制转换向量上调用是否重要?这是在 gcc 4.1 上编译的 C++03。
** 编辑 ** 这是在谷歌模拟中运行的一些代码中,我看到了异常。我试图撕下代码并单独编译它,它工作正常。看得更远
** 进一步编辑 ** 所以问题实际上是分配发生在对象的构造函数的最后一行,该对象本身就是另一个对象的成员。父对象的初始化器列表中的下一个对象是异常的来源,但 gdb 让它看起来好像发生在前一个对象的构造函数的最后一行发生了这个赋值。感谢所有的反对票,提醒我这个问题是多么的误导。