python - python内存的特征图
问题描述
我试图通过调用使用特征的 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;
因此,该分配似乎并没有真正将数据填充到我的数据指针中。有人可以向我解释这个分配应该如何发生,以便数据实际上填充到我的指针中而不分配一些被释放两次的新指针?
谢谢
解决方案
原来我计算错了size
变量。这是有道理的,这会导致内存问题......
特征图按预期工作。
推荐阅读
- git - 如何排除其他目录中的目录中的文件?
- android - 反应原生 - 长按移动
- excel - 如何添加代码以复制 Excel 工作表的第一行并将其粘贴到新的电子邮件正文中
- wordpress - 动态 Gutenberg 块未在编辑器中初始化 Slick Carousel,根本不执行 JS
- javascript - this.setState inside function inside function 返回 undefined
- operating-system - 这个页面目录有效吗?
- nginx - nginx https ip地址到域重定向
- excel - Excel VBA 运行时错误“1004”方法 'GetOpenFilename' of object_Application' 失败
- scrollbar - 即使在未单击程序本身的情况下按住鼠标,如何使程序正常运行
- html - 如何对齐名称和消息