Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah saya boleh mencipta objek menggunakan malloc dan memastikan penyerahan pembina?
Berbeza dengan ungkapan baharu dan padam yang ada di mana-mana, std::malloc membentangkan gelagat unik: ia memang tidak secara automatik memanggil pembina objek semasa peruntukan memori. Ini menimbulkan persoalan: bagaimanakah kita boleh mencipta objek menggunakan malloc sambil memastikan invokasi pembina?
Jawapan:
Pendekatan yang disyorkan dan intuitif ialah menggunakan operator baharu, yang sememangnya mengendalikan kedua-dua peruntukan memori dan seruan pembina. Sebagai alternatif, kita boleh memanggil pembina secara manual melalui "peletakan baharu", teknik yang menggunakan panggilan pembina eksplisit.
Coretan kod berikut menggambarkan penggunaan peletakan baharu:
<code class="cpp">A* a = (A*)malloc(sizeof(A)); new (a) A();</code>
Di sini, penuding a menunjukkan memori yang diperuntukkan bersaiz saiz(A), dan peletakan ungkapan baharu (a) A() kemudiannya membina objek A di lokasi ingatan itu.
Apabila objek tidak lagi diperlukan, kami memanggil pemusnah secara manual dan membebaskan memori yang diperuntukkan:
<code class="cpp">a->~A(); free(a);</code>
Adalah penting untuk ambil perhatian bahawa peletakan baharu biasanya tidak digunakan melainkan terdapat keadaan khusus yang melarang penggunaan baharu dan padam.
Atas ialah kandungan terperinci Bagaimanakah saya boleh mencipta objek menggunakan malloc dan memastikan penyerahan pembina?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!