处理从C中的函数返回的char数组

时间:2015-06-05 15:35:37

标签: c++ c arrays pointers memory

我正在使用一个名为tinyXML的库,它解析XML文件。它的许多方法都返回一个const char *。

阅读完这个问题之后: how to return a char array from a function in C

我现在相信,每当一个方法返回一个char *时,调用者(my)有责任明确地释放它,因为它可能可能在堆上动态分配。我是对还是错?我能假设什么?

(如果我写过一个库,我宁愿返回std :: string而不是char *数组,因为它们对用户来说简单得多。)

2 个答案:

答案 0 :(得分:7)

您不能假设任何事情,如果您必须释放指针,则必须检查您要调用的方法的文档。有时,返回const char *的函数可能会返回静态分配的字符串:

const char *getName(){
    return "SPQR3";
}

或者它可能是一个其他人有责任释放的指针。例如,strcpy的返回值与作为输入传递给它的指针相同。

答案 1 :(得分:5)

阅读图书馆的文档。两种用法(指向内部缓冲区的指针或指向动态分配缓冲区的指针)都很常见,并且不能单独与函数原型区分开来。