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::stringstd::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