Mengembalikan Tatasusunan Tempatan dalam C : Mengelakkan Amaran
Mengembalikan tatasusunan setempat dalam C boleh mencetuskan amaran seperti "alamat pemulangan pembolehubah tempatan atau sementara ." Untuk menangani isu ini, pertimbangkan pendekatan alternatif yang mengurangkan amaran ini:
Menggunakan std::vector
Dalam C , menggunakan std::vector Dengan menggunakan std::vector Mengakses char* jika Diperlukan Jika anda masih memerlukan char* untuk keserasian C API, anda boleh mengaksesnya dengan &reply[0]. Contohnya: Ini membolehkan anda menggunakan std::vector semasa masih berantara muka dengan API C yang memerlukan parameter char*. Faedah Mengelakkan yang baharu Menggunakan std::vector mengelakkan penggunaan baru, yang mempunyai perkara berikut faedah: Kesimpulan Menggunakan std::vector Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengembalikan Tatasusunan Tempatan dengan Selamat dalam C Tanpa Amaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!std::vector<char> recvmsg()
{
std::vector<char> buffer(1024);
//..
return buffer;
}
int main()
{
std::vector<char> reply = recvmsg();
}
void f(const char* data, size_t size) {}
f(&reply[0], reply.size());