Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengintegrasikan Pengumpul Sampah Boehm dengan Kelas Perpustakaan Standard C Seperti `std::vector` dan `std::string`?
Menggunakan Boehm Garbage Collector dengan C Standard Library
Apabila membangunkan aplikasi C berbilang benang, pengumpul sampah konservatif Boehm boleh berguna untuk memudahkan ingatan pengurusan. Ini menimbulkan persoalan tentang cara mengintegrasikan Boehm GC dengan kelas perpustakaan standard C seperti std::map dan std::vector.
Satu pendekatan melibatkan mentakrifkan semula operator global ::new untuk menggunakan pelaksanaan Boehm. Walau bagaimanapun, penyelesaian yang lebih mudah ialah dengan menyatakan secara eksplisit argumen templat pengalokasi dalam templat koleksi perpustakaan standard.
Sebagai contoh, untuk GC-memperuntukkan vektor integer, seseorang boleh menggunakan:
<code class="cpp">std::vector<int, gc_allocator<int>> my_vector;</code>
Argumen templat kedua dalam std::vector digunakan untuk mengawal peruntukan struktur data dalaman vektor, bukan elemen individu.
Untuk std::string, menggunakan Basic_string dengan gc_allocator ialah pilihan:
<code class="cpp">std::basic_string<char, std::char_traits<char>, gc_allocator<char>> my_string;</code>
Sebagai alternatif, seseorang boleh menyediakan tatasusunan aksara secara langsung dengan GC_malloc_atomic.
Ringkasnya, menggunakan Boehm GC dengan std::vector, std::string dan kelas perpustakaan standard yang lain ialah mungkin dengan menentukan hujah templat gc_allocator. Mentakrif semula operator ::new tidak perlu.
Atas ialah kandungan terperinci Bagaimana untuk Mengintegrasikan Pengumpul Sampah Boehm dengan Kelas Perpustakaan Standard C Seperti `std::vector` dan `std::string`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!