Jelaskan dengan diagram bagaimana variabel merujuk ke lokasi memori dengan python

Alokasi memori dapat didefinisikan sebagai mengalokasikan blok ruang dalam memori komputer ke program. Dalam metode alokasi memori dan deallokasi Python otomatis karena pengembang Python membuat pengumpul sampah untuk Python sehingga pengguna tidak perlu melakukan pengumpulan sampah secara manual

Pengumpulan Sampah

Pengumpulan sampah adalah proses di mana juru bahasa membebaskan memori saat tidak digunakan agar tersedia untuk objek lain
Asumsikan kasus di mana tidak ada referensi yang menunjuk ke objek di memori i. e. tidak digunakan, mesin virtual memiliki pengumpul sampah yang secara otomatis menghapus objek itu dari memori heap

Catatan. Untuk informasi lebih lanjut tentang pengumpulan sampah, Anda dapat merujuk ke artikel ini

Penghitungan Referensi

Penghitungan referensi bekerja dengan menghitung berapa kali suatu objek dirujuk oleh objek lain dalam sistem. Ketika referensi ke suatu objek dihapus, jumlah referensi untuk suatu objek dikurangi. Ketika jumlah referensi menjadi nol, objek tidak dialokasikan

Sebagai contoh, Misalkan ada dua atau lebih variabel yang memiliki nilai yang sama, jadi, apa yang dilakukan mesin virtual Python adalah, daripada membuat objek lain dengan nilai yang sama di tumpukan pribadi, itu sebenarnya membuat variabel kedua menunjuk ke yang semula. . Oleh karena itu, dalam kasus kelas, memiliki sejumlah referensi dapat menempati sejumlah besar ruang dalam memori, dalam kasus seperti penghitungan referensi sangat bermanfaat untuk menjaga agar memori tersedia untuk objek lain.

Contoh




# Literal 9 is an object 

b= 9

a= 4

   

# Reference count of object 9  _

# becomes 0 and reference count_

b_0

b_1

b= 4

Alokasi Memori dengan Python

Ada dua bagian memori

  • tumpukan memori
  • tumpukan memori

Metode/panggilan metode dan referensi disimpan dalam memori tumpukan dan semua objek nilai disimpan dalam tumpukan pribadi

Pekerjaan Memori Stack

Alokasi terjadi pada blok memori yang berdekatan. Kami menyebutnya alokasi memori tumpukan karena alokasi terjadi di tumpukan pemanggilan fungsi. Ukuran memori yang akan dialokasikan diketahui oleh kompiler dan setiap kali suatu fungsi dipanggil, variabelnya mendapatkan memori yang dialokasikan pada stack

Ini adalah memori yang hanya dibutuhkan di dalam pemanggilan fungsi atau metode tertentu. Ketika suatu fungsi dipanggil, itu ditambahkan ke tumpukan panggilan program. Penugasan memori lokal apa pun seperti inisialisasi variabel di dalam fungsi tertentu disimpan sementara di tumpukan panggilan fungsi, yang akan dihapus setelah fungsi kembali, dan tumpukan panggilan beralih ke tugas berikutnya. Alokasi ini ke blok memori yang berdekatan ditangani oleh kompiler menggunakan rutinitas yang telah ditentukan sebelumnya, dan pengembang tidak perlu mengkhawatirkannya

Contoh




b5 b6

b_7

b8b9

b8=1

b8a= =5

b8b= =9

b891= 93

Pekerjaan Memori Tumpukan

Memori dialokasikan selama eksekusi instruksi yang ditulis oleh pemrogram. Perhatikan bahwa nama heap tidak ada hubungannya dengan struktur data heap. Ini disebut heap karena merupakan tumpukan ruang memori yang tersedia bagi pemrogram untuk dialokasikan dan dide-alokasikan. Variabel diperlukan di luar pemanggilan metode atau fungsi atau dibagikan dalam beberapa fungsi secara global disimpan dalam memori Heap

Variabel adalah konstruksi logis yang sesuai dengan maksud suatu algoritma, sedangkan lokasi memori adalah konstruksi fisik yang menjelaskan pengoperasian komputer. Secara umum, untuk menjalankan program ada (kompiler dihasilkan) pemetaan antara gagasan logis dari variabel dan penyimpanan komputer.

(Bahkan dalam bahasa rakitan kami memiliki gagasan tentang variabel (logis) yang mengarah ke algoritme dan niat, dan lokasi memori (fisik), meskipun mereka lebih digabungkan dalam rakitan. )

Variabel adalah konsep tingkat tinggi (er). Variabel mewakili baik yang tidak diketahui (seperti dalam matematika, atau tugas pemrograman) atau tempat penampung yang dapat diganti dengan nilai (seperti dalam pemrograman. parameter)

Lokasi memori adalah konsep level (er) rendah. Lokasi memori dapat digunakan untuk menyimpan nilai, kadang-kadang, untuk menyimpan nilai variabel. Namun, register CPU adalah cara lain untuk menyimpan nilai beberapa variabel. Register CPU juga merupakan lokasi penyimpanan tingkat rendah (er), tetapi bukan lokasi memori karena tidak memiliki alamat, hanya nama

Dalam arti tertentu, variabel adalah mekanisme abstraksi untuk mengekspresikan maksud program, sedangkan lokasi memori adalah entitas fisik dari lingkungan pemrosesan yang menyediakan penyimpanan & pengambilan

Pertanyaan 003. Benarkah pointer disimpan di dalam lokasi memori 0x23452?

Kita tidak bisa mengatakan dengan pasti. Hanya karena ada nilai di sana yang berfungsi sebagai alamat, bukan berarti alamat itu, bisa jadi bilangan bulat (desimal) 144466, sebagai gantinya. Kita tidak dapat membuat asumsi tentang interpretasi nilai hanya berdasarkan tampilannya secara numerik

Pertanyaan 004. Benarkah pointer disimpan di dalam lokasi memori 0x23452?

Ini memang pertanyaan yang aneh. Mereka mengharapkan beberapa asumsi berdasarkan kotak, namun, perhatikan bahwa alamat bertambah 1 untuk setiap kotak. Di komputer modern mana pun, itu berarti bahwa setiap kotak dapat menampung satu byte — pengalamatan byte telah menjadi norma selama beberapa dekade sekarang. Namun sebuah byte hanya 8-bit dan dapat berkisar dari 0 hingga 255 (untuk nilai yang tidak ditandatangani); . (Ini bisa bekerja jika ini adalah mesin alamat kata, tetapi tidak dikatakan demikian, dan, hanya sedikit mesin saat ini, meskipun beberapa mesin pendidikan begitu. )

Berdasarkan empat kartu flash yang telah saya tunjukkan kepada Anda semua, saya akan mendefinisikan penunjuk dengan cara yang sedikit berbeda

Pointer adalah lokasi memori yang nilainya adalah alamat memori dari lokasi memori lain

Meskipun ada situasi di mana pemikiran ini benar, Anda mencampurkan metafora di sini. Gagasan tentang variabel masuk ke algoritme dan maksudnya - tidak perlu menganggap semua variabel memiliki lokasi memori. Beberapa variabel (terutama array) memiliki lokasi memori karena lokasi memori mendukung pengalamatan (sedangkan register CPU hanya dapat diberi nama tidak diindeks)

Untuk eksekusi, ada pemetaan logis antara variabel & pernyataan dan lokasi memori prosesor & urutan instruksi prosesor. Variabel yang nilainya tidak pernah berubah (mis. g. konstanta) bahkan tidak memerlukan lokasi memori, karena nilainya dapat direproduksi sesuka hati (mis. g. sesuai kebutuhan untuk urutan kode yang dihasilkan oleh kompiler)

Bagaimana variabel merujuk ke lokasi memori di Python?

Menemukan Alamat Variabel menggunakan id() dengan Python . Anda mungkin mendapatkan nilai alamat yang berbeda berdasarkan sistem Anda. Anda juga dapat melakukan hal yang sama untuk menemukan alamat yang serupa untuk float, string, fungsi, atau objek. As a result above 10 digits decimal value gives the memory reference of variables var1 and var2. You may get the different value of address based on your system. You can also do the same for finding the address similarly for a float, string, function or an object.

Bagaimana variabel merujuk ke lokasi memori?

Saat variabel dibuat di C, alamat memori diberikan ke variabel. Alamat memori adalah lokasi penyimpanan variabel di komputer . Saat kami menetapkan nilai ke variabel, itu disimpan di alamat memori ini.

Bagaimana cara menemukan lokasi memori dengan Python?

Metode 1. Menggunakan id() . fungsi id() memberikan alamat objek tertentu.