Stack vs Heap Peruntukan Struktur dalam Go
Model pengurusan memori Go boleh mengelirukan bagi mereka yang datang daripada bahasa pengaturcaraan yang berbeza, kerana ia berbeza daripada pengaturcaraan berasaskan tindanan gaya C dan pengaturcaraan berasaskan tindanan gaya Python. Dalam Go, tindanan dan timbunan boleh digunakan untuk peruntukan berubah-ubah, dan keputusan dibuat berdasarkan faktor seperti analisis melarikan diri.
Soalan 1: Di manakah Struktur Contoh 2 Diisytiharkan?
Dalam contoh 2 anda, struct diperuntukkan pada heap kerana alamat struct diambil. Dalam Go, mengambil alamat mana-mana bahagian struct memaksa keseluruhan struct untuk diperuntukkan pada timbunan.
Soalan 2: Ketersediaan Struktur Contoh 2 selepas Fungsi Kembali
Walaupun struct contoh 2 diperuntukkan pada timbunan, ia kekal tersedia selepas fungsi kembali kerana pengumpul sampah menguruskan peruntukan memori dan deallocation.
Soalan 3: Struktur yang Dilalui oleh Nilai lwn. Rujukan
Dalam Go, semuanya diluluskan mengikut nilai, tidak kira sama ada pembolehubah ialah jenis primitif atau struct. Apabila penunjuk kepada struct dikembalikan, nilai penunjuk itu sendiri yang dihantar, bukan struct. Ini bermakna bahawa sebarang pengubahsuaian yang dibuat pada struct melalui penuding akan dapat dilihat oleh pemanggil.
Atas ialah kandungan terperinci Stack vs. Heap: Where Do Go Structs Live?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!