【问题标题】:Is there a way to delete pointer passed to python? [duplicate]有没有办法删除传递给python的指针? [复制]
【发布时间】:2020-05-13 01:58:26
【问题描述】:

我在 C++ 中有一个将数组传递给 python 代码的函数。据我了解,我需要delete[] 它,所以内存不会累积。 以下是它在 C++ 方面的工作原理:

extern "C" char* func()
{
    char* abc = new char[1000000]; //about 1MB
    return abc;
}

所以在 python 中,我只是通过 ctypes 接收这些数据并做我该做的。我一遍又一遍地调用它。那么这最终会溢出我的RAM吗?有办法避免吗?

【问题讨论】:

  • 创建另一个 C++ 函数来接收和释放指针。然后从您的 Python 代码中调用它。
  • 如果你能详细说明,另一个函数如何访问这样的指针?
  • @Name,请参阅 JohnSmith 链接的帖子中的最佳答案

标签: python c++ arrays pointers ctypes


【解决方案1】:

只需使用unique_ptr!当函数作用域终止时,它会删除自己。

unique_ptr<char> func()
{
    unique_ptr<char> abc (new char[1000000]); //about 1MB
    return abc;
}

【讨论】:

  • 这行不通。你不能 extern "C" 一个唯一的指针。
  • (在您编辑之后)使用名称修改,如果没有来自 Python 的 extern "C",您不确定是否可以使用它...
  • 对不起...你是对的! shared_ptr? 呢?
猜你喜欢
  • 2017-09-02
  • 2012-02-25
  • 2013-02-28
  • 1970-01-01
  • 2019-10-23
  • 1970-01-01
  • 2014-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多