gpt4 book ai didi

python - 谁删除了python中的内存?

转载 作者:行者123 更新时间:2023-11-30 02:44:09 26 4
gpt4 key购买 nike

我使用 SWIG 生成包装器。因此我需要一个看起来像的函数

%inline %{
// Serializes into a string
void* SerCmd(Class *v, int *length, char *str)
{
QByteArray ba;
QDataStream out(&ba, QIODevice::WriteOnly);
out << *v;
*length = ba.size();
str = new char[ba.size()];
memcpy(str, ba.constData(), ba.size());
return str;
}
%}

这个函数是从 python 调用的,但是谁在删除我用 new 分配的内存? python 是为我做的还是如何实现的?

谢谢!

最佳答案

如果这不能回答您的问题,我会将其删除。但是根据这里找到的 SWIG 信息:

http://www.swig.org/Doc1.3/Library.html#Library_stl_cpp_library

a std::string 可以用来代替手动分配内存。鉴于此信息,这很可能会被使用。

%inline %{
// Serializes into a string
void SerCmd(Class *v, int *length, std::string& str)
{
QByteArray ba;
QDataStream out(&ba, QIODevice::WriteOnly);
out << *v;
*length = ba.size();
str.clear();
str.append(ba.constData(), ba.size());
}
%}

既然您注意到 std::string 可以包含 NULL,那么处理它的正确方法是使用 string::append() 函数。

http://en.cppreference.com/w/cpp/string/basic_string/append

请注意上面链接中的 4) 项(空字符完全可以)。请注意,与 C 字符串不同,std::string 通过空字符确定其大小。

现在,要获取此数据,请使用 string::data() 函数以及 string::size() 函数来告诉您有多少字符串中的数据。

关于python - 谁删除了python中的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25494389/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com