【问题标题】:Eigen map of python memorypython内存的特征图
【发布时间】:2020-11-23 06:57:37
【问题描述】:

我正在尝试通过调用使用 eigen 的 C++ 函数来优化一些 python 代码。 我为此使用ctypes。我的 numpy 数组作为 float* 传入(基于此示例:https://github.com/nicolamontecchio/ctypes-eigen-numpy) 这适用于输入数组,但结果有问题。

基本上是这样的:

void some_function(..., int32_t** results) {
    for (int32_t i = 0; ...) {
        Eigen::Map<Eigen::RowVectorXi> eigen_result(results[i], 1, size));

        eigen_result = Eigen::RowVectorXi::Zero(size);
    }
}

这很有效,因为我可以在 python 中打印函数的输出。但是,在函数结束时,我收到以下错误:

double free or corruption (!prev)

做例子时不会出现这个错误

eigen_result(0) = 5.0;

所以看起来赋值并没有真正将数据填充到我的数据指针中。有人可以向我解释一下这个分配应该如何发生,以便数据实际上填充到我的指针中,而不分配一些被释放两次的新指针?

谢谢

【问题讨论】:

    标签: python ctypes eigen


    【解决方案1】:

    原来我计算错了size 变量。 这是有道理的,这会导致内存问题......

    特征图按预期工作。

    【讨论】:

      猜你喜欢
      • 2022-04-26
      • 2018-02-23
      • 1970-01-01
      • 2014-05-11
      • 1970-01-01
      • 2021-02-17
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多