[英]Eigen map of python memory
我正在尝试通过调用确实使用特征的 C++ function 来优化一些 python 代码。 我为此使用ctypes。 我的 numpy 数组作为浮点数传入*(基于此示例: https://github.com/nicolamontecchio/ctypes-eigen-numpy )这适用于输入 ZA3CBC3F9D0CE2F2C1554E1 的麻烦,但 IDM62C19CZE1
基本上它看起来像这样:
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 中打印 function 的 output。 但是,在 function 的末尾,我收到以下错误:
double free or corruption (!prev)
例如,在执行此操作时不会发生此错误
eigen_result(0) = 5.0;
因此,该分配似乎并没有真正将数据填充到我的数据指针中。 有人可以向我解释这个分配应该如何发生,以便数据实际上填充到我的指针中,而不分配一些被释放两次的新指针?
谢谢
事实证明我计算错了size
变量。 这是有道理的,这会导致 memory 问题......
本征 Map 按预期工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.