GNU/Linux >> Belajar Linux >  >> Linux

Mengalokasikan dan Menghapus alokasi memori melintasi batas lib bersama

Selama Anda tetap menggunakan Glibc atau pengalokasi "normal" lainnya (jemalloc, tcmalloc, dll.), status heap akan dibagikan oleh semua perpustakaan dan dengan demikian Anda akan dapat membebaskan memori yang dialokasikan di suatu tempat dengan malloc di mana pun Anda mau.

Secara teori dimungkinkan untuk menghindari ini. Misalnya, beberapa pustaka dapat ditautkan dengan penerapan kustom malloc /free (melalui tipuan skrip simbol -Bsymbolic ) yang memiliki tumpukan pribadinya sendiri dan karenanya tidak akan berinteraksi dengan baik dengan bagian lain dari program Anda. Tapi saya belum pernah melihat yang seperti ini di kehidupan nyata.

Kontainer STL didasarkan pada malloc /free jadi dimungkinkan untuk meneruskan/memodifikasinya melintasi batas perpustakaan juga. Tentu saja pustaka yang berbeda dapat dikompilasi dengan kompiler berbeda dan versi STL berbeda yang tidak kompatibel (mis. libstdc++, libcxx, dll.) tetapi tipe penampung C++ mereka akan berbeda dan kompiler tidak akan mengizinkan Anda meneruskannya ke modul yang tidak kompatibel.


Linux
  1. Cara Menghapus Buffer Memori dan Cache di Linux

  2. Cara Menghitung Penggunaan Memori di Linux menggunakan sar, ps, dan gratis

  3. Contoh Perintah ipcs di Linux

  1. penggunaan dan pengubahan ukuran tmpfs

  2. Di Linux, apa perbedaan antara buffer dan cache yang dilaporkan oleh perintah free?

  3. rkhunter:Segmen Memori Bersama yang Mencurigakan

  1. Linux – Menentukan Penggunaan Memori dengan Benar di Linux?

  2. Tentang Mem Dan Vmem?

  3. _path_files Dan Compadd Abaikan-file Parameter?