如果我有如下函数:
bool MyFunc(char **outMessage)
{
}
这里的期望是什么?调用者会分配一个缓冲区,并传递给被调用者吗?但是,如果被调用者溢出缓冲区怎么办?
要清楚你没有大小,或任何其他参数,这是函数定义。你会怎么看?
还是我写错了?这是一个被调用者分配的缓冲区?但是如果它是一个被调用者分配的缓冲区,我该如何处理缓冲区呢?注意:库没有提供处理这个的函数。
编辑:这是一个真实场景,取自此处 --> http://llvm.org/docs/doxygen/html/Analysis_2Analysis_8cpp_source.html#l00078
最佳答案
我有一个函数 (...) - 你从哪里得到的?它在某个框架中吗?还是在一个项目中?
在这种情况下,您需要引用文档。
如果出于任何原因没有文档,请尝试找到作者(如果他在您的公司/项目中)并询问。
如果出于任何原因无法访问作者,请参阅源代码 - 查找此功能的用法。它在哪里使用?其他人如何使用它?
作为最后的手段,做一个假设。我猜你需要设置*outMessage
,即函数是这样调用的:
char * msg = NULL;
MyFunc(&msg); // You set it
printf("%s", msg);
无论如何,这对 C++ 不利。
关于C++ - char** 作为函数参数传入,它应该是调用者分配的还是被调用者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28496909/