Mengintegrasikan Koleksi Sampah Konservatif dengan Perpustakaan Standard C
Soalan:
Dalam pelbagai -aplikasi C berulir, bolehkah pemungut sampah konservatif (GC) Boehm digunakan secara berkesan bersama dengan perpustakaan standard C? Secara khususnya, bagaimanakah pengendali ::new dan pengalokasi yang disediakan oleh std::vector dan std::string harus dikendalikan?
Jawapan:
1. Mentakrif semula operator ::new:
Mentakrifkan semula ::operator baharu dengan GC Boehm tidak perlu. Dengan menggunakan GC Boehm dengan betul, adalah mungkin untuk mengelak daripada mentakrifkan semula ::operator baharu secara eksplisit.
2. Peruntukan untuk Bekas Perpustakaan Standard:
std::vector:
std::string:
Contoh:
Kod berikut menunjukkan pelaksanaan tersuai bagi vektor yang diperuntukkan GC:
<code class="cpp">#include <gc/gc_cpp.h> #include <gc/gc_allocator.h> #include <vector> class Myvec { std::vector<int, gc_allocator<int>> _vec; public: Myvec(size_t sz = 0) : _vec(sz) {} // ... (rest of class implementation) };</code>
3. Keserasian dengan g :
Ya, adalah mungkin untuk menggunakan Boehm GC dengan aplikasi yang disusun oleh g . Ikuti garis panduan di atas untuk menyepadukan GC dengan perpustakaan standard dengan berkesan.
Tambahan (Januari 2017):
Atas ialah kandungan terperinci Bolehkah Pengumpul Sampah Konservatif Boehm Disepadukan dengan Perpustakaan Standard C untuk Aplikasi Berbilang Benang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!