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

SPQ*_*QR3 8 c c++ memory arrays pointers

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

读完这个问题之后: 如何从C中的函数返回一个char数组

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

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

hug*_*omg 7

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

const char *getName(){
    return "SPQR3";
}
Run Code Online (Sandbox Code Playgroud)

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


Que*_*tin 5

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