Apabila bekerja dengan memori dinamik dalam C , mengurus objek dan membebaskan memori boleh mengelirukan. Artikel ini menangani salah tanggapan memadam objek dalam C .
Pertimbangkan coretan kod berikut:
<code class="cpp">tempObject obj1; tempObject obj2; vector<tempObject> tempVector; tempVector.push_back(obj1); tempVector.push_back(obj2);</code>
Panggilan clear() pada vektor akan memusnahkan objek yang disimpan di dalamnya. Walau bagaimanapun, ia tidak membebaskan memori yang diperuntukkan secara automatik. Untuk melepaskan memori, tindakan yang lebih eksplisit diperlukan.
<code class="cpp">vector<tempObject>().swap(tempVector);</code>
Menukar vektor kosong dengan yang asal secara berkesan mendelokasikan memori yang diduduki oleh tempVector.
Jika tempVector ditakrifkan sebagai vektor penunjuk kepada objek sebaliknya:
<code class="cpp">vector<tempObject *> *tempVector; // Push objects... tempVector->clear();</code>
Dalam kes ini, clear() mendelokasikan memori untuk objek yang ditunjuk oleh penunjuk dalam vektor, tetapi penunjuk itu sendiri masih perlu dipadamkan.
Walaupun clear() memusnahkan objek dalam vektor, ia tidak melepaskan memori yang diperuntukkan. Untuk menuntut semula memori sepenuhnya, tindakan eksplisit seperti menukar dengan vektor kosong atau menggunakan shrink_to_fit() dalam C 11 adalah perlu. Adalah penting untuk memahami nuansa ini untuk mengurus memori dengan berkesan dalam program C.
Atas ialah kandungan terperinci Bagaimanakah Saya Melepaskan Sepenuhnya Memori yang Digunakan oleh Vektor dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!