Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apakah perbezaan antara timbunan dan timbunan dalam golang

Apakah perbezaan antara timbunan dan timbunan dalam golang

青灯夜游
青灯夜游asal
2023-01-10 17:27:242403semak imbas

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.

Apakah perbezaan antara timbunan dan timbunan dalam golang

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.

Apakah perbezaan antara timbunan dan timbunan dalam golang

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.

Apakah perbezaan antara timbunan dan timbunan dalam golang

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.

    { }

  • Kitaran hayat memori timbunan adalah lebih lama daripada ingatan tindanan Jika nilai yang dikembalikan oleh fungsi akan digunakan di tempat lain, maka nilai ini akan diperuntukkan secara automatik kepada timbunan oleh penyusun.
  • Berbanding dengan ingatan tindanan, ingatan timbunan tidak boleh dikeluarkan secara automatik oleh pengkompil dan hanya boleh dikeluarkan oleh pemungut sampah.

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 2
var 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
  • Dalam kes kedua, baharu digunakan untuk memohon ruang, kerana p akan hilang selepas keluar dari fungsi akan dikeluarkan, jadi p digunakan pada tindanan (dilepaskan secara automatik)

[Cadangan berkaitan:

Pergi tutorial video

]

Atas ialah kandungan terperinci Apakah perbezaan antara timbunan dan timbunan dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn