C++。类型转换数组是否需要内存管理?
C++. Do type casted arrays need to be memory managed?
代码如下所示:
std::string str = (char *) xmlTextReaderReadString(*xml);
str 的内存管理工作正常。 str 对字符数组进行深度复制。
我担心的是打字时正在制作什么。 xmlTextReaderReadString 正在返回类型定义的 unsigned char * 或他们如何将其定义为 (xmlChar*)。
我找不到关于堆栈溢出的可行问题,但如果你找到了,只需 link 它,我将删除它 post。
以此类推:
xmlTextReaderGetAttribute (*xml, (xmlChar*)"type"))
我是否需要内存管理类型转换的“类型”
是的,在构建 std::string
.
后,您需要对 xmlTextReaderReadString
的返回值调用 xmlFree()
我从未使用过该库,但 google 搜索在几秒钟内找到了答案。
也与演员无关。你得到了一个值,你可以使用它,但之后你需要释放它。如果您使用该值,同时构建一个 std::string
,std::string
将管理它自己的副本,您仍然需要管理您的。
您使用的第二个 API 也被标记为
The string must be deallocated by the caller
但这适用于返回值,不适用于 "type"
。这是一个不应该被释放的文字。
http://www.mit.edu/afs.new/sipb/user/yoz/libxml2-2.7.3/doc/html/libxml-xmlreader.html
代码如下所示:
std::string str = (char *) xmlTextReaderReadString(*xml);
str 的内存管理工作正常。 str 对字符数组进行深度复制。
我担心的是打字时正在制作什么。 xmlTextReaderReadString 正在返回类型定义的 unsigned char * 或他们如何将其定义为 (xmlChar*)。
我找不到关于堆栈溢出的可行问题,但如果你找到了,只需 link 它,我将删除它 post。
以此类推:
xmlTextReaderGetAttribute (*xml, (xmlChar*)"type"))
我是否需要内存管理类型转换的“类型”
是的,在构建 std::string
.
xmlTextReaderReadString
的返回值调用 xmlFree()
我从未使用过该库,但 google 搜索在几秒钟内找到了答案。
也与演员无关。你得到了一个值,你可以使用它,但之后你需要释放它。如果您使用该值,同时构建一个 std::string
,std::string
将管理它自己的副本,您仍然需要管理您的。
您使用的第二个 API 也被标记为
The string must be deallocated by the caller
但这适用于返回值,不适用于 "type"
。这是一个不应该被释放的文字。
http://www.mit.edu/afs.new/sipb/user/yoz/libxml2-2.7.3/doc/html/libxml-xmlreader.html