此问题仅出现在g ++ 4.9.3 上。考虑最小代码:
permute(intList, System.out::println);
我用#include <iostream>
#include <Eigen/dense>
int main()
{
Eigen::MatrixXcd mat = Eigen::MatrixXcd::Identity(2,2);
std::cout << mat << std::endl;
}
和-Og
编译了它(我需要 这些标志来触发错误):
g ++ -Og -D_GLIBCXX_DEBUG -I./eigen minimal.cpp
运行程序会导致:
a.out(42247,0x7fff7cf9e300)malloc: *对象0x10c6ca3d0的错误: 正在释放的指针未分配 * 在malloc_error_break中设置断点以调试Abort trap:6
Valgrind吐出一些东西:
-D_GLIBCXX_DEBUG
我不确定发生了什么。有谁知道这是一个与g ++相关的问题还是一个特征问题?我在OS X Yosemite上使用MacPorts的最新Eigen 3.2.5和g ++ 4.9.3。
PS:如果我使用clang或g ++ 5进行编译,则不会出现错误。