Baca dalam bahasa Inggris

Bagikan melalui


Aturan Manajemen Memori

Masa pakai pointer ke antarmuka selalu dikelola melalui metode AddRef dan Release pada setiap antarmuka COM. Untuk informasi selengkapnya, lihat Aturan untuk Mengelola Jumlah Referensi.

Untuk semua parameter lainnya, penting untuk mematuhi aturan tertentu untuk mengelola memori. Aturan berikut berlaku untuk semua parameter metode antarmukaâ €"termasuk nilai pengembalianâ€"yang tidak diteruskan oleh nilai:

  • Dalam parameter harus dialokasikan dan dibebaskan oleh pemanggil.
  • Parameter keluar harus dialokasikan oleh yang disebut; mereka dibeberkan oleh pemanggil menggunakan alokator memori tugas COM standar. Lihat Alokator Memori OLE untuk informasi selengkapnya.
  • Parameter masuk/keluar awalnya dialokasikan oleh pemanggil, dan kemudian dibeberkan dan dialokasikan oleh yang disebut, jika perlu. Seperti yang berlaku untuk parameter keluar, pemanggil bertanggung jawab untuk membebaskan nilai akhir yang dikembalikan. Alokator memori COM standar harus digunakan.

Dalam dua kasus terakhir, di mana satu bagian kode mengalokasikan memori dan bagian kode yang berbeda membebaskannya, menggunakan alokator COM memastikan bahwa dua bagian kode menggunakan metode alokasi yang sama.

Area lain yang membutuhkan perhatian khusus adalah perlakuan parameter keluar dan keluar dalam kondisi kegagalan. Jika fungsi mengembalikan kode kegagalan, pemanggil biasanya tidak memiliki cara untuk membersihkan parameter keluar atau keluar. Ini mengarah ke aturan tambahan berikut:

  • Jika terjadi kondisi kesalahan, parameter harus selalu diatur dengan andal ke nilai yang akan dibersihkan tanpa tindakan apa pun oleh pemanggil.
  • Semua parameter pointer keluar harus secara eksplisit diatur ke NULL. Ini biasanya diteruskan dalam parameter pointer-to-pointer tetapi juga dapat diteruskan sebagai anggota struktur yang dialokasikan pemanggil dan kode yang disebut diisi. Cara paling mudah untuk memastikan ini adalah (sebagian) untuk mengatur nilai-nilai ini ke null pada entri fungsi. Aturan ini penting karena mempromosikan interoperabilitas aplikasi yang lebih kuat.
  • Dalam kondisi kesalahan, semua parameter masuk harus dibiarkan sendiri oleh kode yang dipanggil (sehingga tetap pada nilai yang diinisialisasi oleh pemanggil) atau secara eksplisit diatur, seperti dalam kasus pengembalian kesalahan parameter keluar.

Ingatlah bahwa konvensi manajemen memori untuk aplikasi COM ini hanya berlaku di seluruh antarmuka publik dan API; tidak ada persyaratan sama sekali bahwa alokasi memori secara ketat internal ke aplikasi COM perlu dilakukan menggunakan mekanisme ini.

COM secara internal menggunakan Panggilan Prosedur Jarak Jauh (RPC) untuk berkomunikasi antara klien dan server. Untuk informasi selengkapnya tentang mengelola memori di stub server RPC, lihat topik Manajemen Memori server-stub.