Rumah > Artikel > pembangunan bahagian belakang > Apakah perbezaan antara timbunan dan timbunan dalam golang
Perbezaan antara timbunan dan timbunan: 1. Timbunan digunakan untuk menyimpan segmen memori yang diperuntukkan secara dinamik semasa pelaksanaan proses, manakala timbunan digunakan untuk menyimpan pembolehubah tempatan yang dicipta sementara oleh atur cara; nisbah kitaran memori timbunan Memori timbunan mestilah lebih panjang 3. Berbanding dengan ingatan timbunan, ingatan timbunan tidak boleh dikeluarkan secara automatik oleh pengkompil dan hanya boleh dikeluarkan oleh pengumpul sampah.
Persekitaran pengendalian tutorial ini: sistem Windows 7, GO versi 1.18, komputer Dell G3.
Terdapat dua konsep yang sangat penting dalam bahasa pengaturcaraan, timbunan dan timbunan
Timbunan dan timbunan ialah dua struktur data yang sangat penting, yang sering digunakan semasa mengedit program tidak terkecuali.
Mari kita lihat dua struktur data ini.
Timbunan
Timbunan hanya dibenarkan untuk meletakkan data ke dalam satu hujung jadual linear dan kemudian mengeluarkan data di hujung ini , iaitu, mengikut masuk pertama, keluar terakhir, Alih keluar elemen daripada timbunan dalam tertib keluar terakhir masuk dahulu.
Proses meletakkan elemen ke dalam tindanan dipanggil menolak. Menolak ke atas tindanan akan menambah bilangan elemen pada tindanan Elemen terakhir yang diletakkan pada tindanan berada di bahagian atas tindanan, dan unsur pertama yang diletakkan pada tindanan adalah di bahagian bawah tindanan.
Apabila mengeluarkan elemen daripada tindanan, ia hanya boleh dikeluarkan dari bahagian atas tindanan Selepas mengeluarkan elemen, bilangan tindanan akan menjadi lebih kecil terakhir, dan elemen yang dimasukkan terakhir akan sentiasa dikeluarkan.
Timbunan
Timbunan dalam peruntukan memori adalah serupa dengan meletakkan pelbagai perabot di dalam bilik, saiznya perabot mungkin besar atau kecil Apabila memperuntukkan memori, anda perlu mencari ruang yang cukup besar untuk menampung perabot sebelum meletakkan perabot.
Setelah berulang kali meletakkan dan mengosongkan perabot, ruang di dalam bilik akan menjadi kucar-kacir Pada masa ini, jika anda meletakkan perabot di ruang ini, anda akan mendapati bahawa walaupun terdapat ruang yang mencukupi, setiap ruang diagihkan dalam keadaan yang berbeza. kawasan , tiada ruang berterusan untuk meletakkan perabot. Pada masa ini, pengagih memori perlu melaraskan dan mengoptimumkan ruang ini.
Berbanding dengan memori yang diperuntukkan tindanan, timbunan sesuai untuk peruntukan memori saiz yang tidak dapat diramalkan.
Perbezaan antara timbunan dan timbunan ialah:
Timbunan: Timbunan digunakan untuk penyimpanan Sebuah memori segmen yang diperuntukkan secara dinamik semasa pelaksanaan proses. Saiznya tidak tetap dan boleh dikembangkan atau dikurangkan secara dinamik. Apabila proses memanggil fungsi seperti malloc untuk memperuntukkan memori, memori yang baru diperuntukkan ditambah secara dinamik pada timbunan (timbunan dikembangkan). Apabila fungsi bebas dan lain-lain digunakan untuk melepaskan memori, memori yang dikeluarkan dikeluarkan daripada timbunan (timbunan dikurangkan); pembolehubah dibuat sementara oleh atur cara Iaitu, pembolehubah tempatan yang ditakrifkan dalam pendakap kerinting
fungsi kami.{ }
Peruntukan timbunan dan timbunan Penyiapan definisi berubah secara amnya diperuntukkan pada timbunan dan timbunan ruang Ya, ruang yang wujud bergantung kepada sama ada terdapat peruntukan memori dinamik (baru/malloc).
Sebagai contoh, kes berikut
Kes 1
Kes 2var p *int //全局指针变量 func f(){ var i int i = 1 p = &i //全局指针变量指向局部变量i }Dalam kes pertama, gunakan var untuk mentakrifkan setempat pembolehubah, Walau bagaimanapun, oleh kerana i ditugaskan kepada pembolehubah penunjuk global p, i tidak akan dikeluarkan apabila fungsi tamat, jadi pembolehubah tempatan i digunakan pada timbunan (dikeluarkan secara manual oleh pengaturcara).
func f(){ p := new(int) //局部指针变量,使用new申请的空间 *p = 1 }Pembolehubah setempat: pembolehubah yang ditakrifkan dalam fungsi Ia mempunyai kitaran hayat dinamik: entiti baharu dicipta setiap kali ia dilaksanakan dan bertahan sehingga tiada sesiapa menggunakannya (contohnya, tiada. penunjuk luaran Tuding kepadanya, tiada laluan untuk mengakses pembolehubah ini apabila fungsi keluar) Pada masa ini, ruang yang didudukinya akan dikitar semula
[Cadangan berkaitan:
Pergi tutorial videoAtas ialah kandungan terperinci Apakah perbezaan antara timbunan dan timbunan dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!