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/