Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menggunakan Pengumpul Sampah Boehm dengan Perpustakaan Standard C?
Menggunakan Boehm Garbage Collector dengan C Standard Library
Untuk membangunkan aplikasi C berbilang benang yang menggunakan pengumpul sampah konservatif Boehm, terdapat adalah beberapa pendekatan untuk dipertimbangkan:
1. Mentakrifkan Semula Operator ::new:
Satu pilihan ialah mentakrifkan semula operator global ::new sebagai versi Boehm. Walau bagaimanapun, pendekatan ini mungkin mengganggu komponen perpustakaan lain dan secara amnya tidak disyorkan.
2. Menggunakan Peruntukan Eksplisit:
Sebagai alternatif, anda boleh menggunakan templat gc_allocator Boehm dengan kelas koleksi STL. Pengagih eksplisit boleh menentukan pengurus memori untuk digunakan untuk peruntukan, memastikan kedua-dua data dalaman dan elemen individu bekas STL diperuntukkan GC.
3. Mencipta Koleksi Tersuai:
Untuk penyelesaian yang lebih disesuaikan, buat koleksi tersuai berdasarkan kelas templat STL, tetapi gunakan gc_allocator sebagai hujah templat pengalokasi. Ini membolehkan anda memperuntukkan tatasusunan dalaman bekas STL, seperti std::string, menggunakan fungsi GC_malloc_atomic Boehm.
4. Pertimbangan untuk std::string:
Untuk GC-memperuntukkan data dalaman std::string, anda boleh menentukan rentetan anda sendiri menggunakan templat basic_string dengan gc_allocator. Dengan mengatasi operator [], anda boleh mengakses penimbal char dalaman dan memperuntukkannya menggunakan GC_malloc_atomic.
5. Potensi Isu dengan g :
Walaupun GC Boehm telah meningkatkan kestabilan dari semasa ke semasa, ia mungkin masih tidak disyorkan untuk digunakan dalam aplikasi kompleks yang disusun oleh g . Walau bagaimanapun, contoh yang disediakan (myvec.cc), yang menggunakan gc_allocator, berjaya menyusun tanpa menggunakan malloc biasa atau ::operator new.
Nota Tambahan:
The Piawaian C 11 termasuk sokongan untuk kutipan sampah melalui
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Pengumpul Sampah Boehm dengan Perpustakaan Standard C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!