Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Pembangun C Boleh Mengagihkan Semula Memori dengan Cekap?
Memperuntukkan Semula Memori dalam C
Apabila bekerja dengan peruntukan memori dinamik dalam C , pembangun sering menghadapi keperluan untuk mengagihkan semula memori untuk menampung perubahan dalam data saiz. Berbeza dengan bahasa seperti C, C tidak menyediakan fungsi realloc yang jelas.
Mempertimbangkan Alternatif
Memadam penuding semasa dan memperuntukkan yang baharu dengan saiz yang lebih besar ialah bukan penyelesaian yang optimum kerana ketidakcekapannya. Di bawah ialah pendekatan yang lebih baik menggunakan perpustakaan standard.
Menggunakan Vektor Perpustakaan Templat Standard (STL)
Vektor STL menawarkan cara yang mudah untuk mengendalikan peruntukan memori dinamik dan saiz semula. Mereka menyediakan keupayaan pengagihan semula yang cekap melalui fungsi ubah saiz ahli mereka. Begini cara menggunakan vektor untuk pengagihan semula:
Penukaran Kod:
// Old C code using realloc Type* t = (Type*)malloc(sizeof(Type)*n) memset(t, 0, sizeof(Type)*m) // New C++ code using std::vector std::vector<Type> t(n, 0); // Resizing in C using realloc t = (Type*)realloc(t, sizeof(Type) * n2); // Resizing in C++ using vector::resize t.resize(n2);
Fungsi Memanggil dengan Vektor:
Kepada hantar vektor ke dalam fungsi, gunakan sintaks berikut:
Foo(&t[0]); // Instead of Foo(t)
Ini memastikan keserasian dengan argumen fungsi yang mengharapkan argumen penunjuk.
Kelebihan Vektor STL
Menggunakan vektor STL untuk pengagihan semula memori menawarkan beberapa kelebihan:
Atas ialah kandungan terperinci Bagaimanakah Pembangun C Boleh Mengagihkan Semula Memori dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!