c++ - 如何在 C++ 中返回本地数组?

标签 c++ char return-type

char *recvmsg(){
    char buffer[1024];
    return buffer;
}

int main(){
    char *reply = recvmsg();
    .....
}

我收到警告:

warning C4172: returning address of local variable or temporary

最佳答案

我建议std::vector<char> :

std::vector<char> recvmsg()
{
    std::vector<char> buffer(1024);
    //..
    return buffer;
}
int main()
{
    std::vector<char> reply = recvmsg();
}

然后,如果您需要 char*在您的代码中,然后您可以使用 &reply[0]随时都可以。例如,

void f(const char* data, size_t size) {}

f(&reply[0], reply.size());

你就完成了。这意味着,如果您使用 C API,那么您仍然可以使用 std::vector , 你可以通过 &reply[0]到 C API(如上所示)和 reply到 C++ API。

底线是:避免使用 new越多越好。如果您使用 new ,然后你必须自己管理它,你必须到delete当你不需要它时。

关于c++ - 如何在 C++ 中返回本地数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7769998/

相关文章:

c++ - VK_FILTER_NEAREST 在采样期间不起作用

c++ - 通过正则表达式崩溃删除 RTF 标签

javascript - 大写文本输入的第一个字符

c - 如何使用指针初始化 char 数组?

javascript - 我如何理解返回函数的函数?

javascript - 如何编辑特定 URL 的文档值? ( Chrome )

c++ - 调试时 Visual Studio 2013 崩溃?

java - JNA:指向字符的指针**

c - 如何通过 printf 在 C 中打印 char 数组?

c - C函数的有趣返回行为