Rumah >pembangunan bahagian belakang >C++ >Di manakah Pembolehubah Global dalam C Menyimpan Memorinya: Timbunan atau Timbunan?

Di manakah Pembolehubah Global dalam C Menyimpan Memorinya: Timbunan atau Timbunan?

DDD
DDDasal
2024-12-02 09:22:11971semak imbas

Where Do Global Variables in C   Store Their Memory: Stack or Heap?

Peruntukan Memori untuk Pembolehubah Global dalam C : Stack vs Heap

Dalam C , apabila struktur data diisytiharkan secara global, persoalan timbul sama ada ia menggunakan ingatan tindanan atau ingatan timbunan. Untuk memahami perkara ini, kami menyelidiki susun atur memori proses C biasa.

Reka Letak Memori Proses C

Proses A C biasanya memperuntukkan lima kawasan memori yang berbeza:

  1. Kod (segmen teks)
  2. Data yang dimulakan (data segmen)
  3. Data tidak dimulakan (segmen bss)
  4. Timbunan
  5. Timbunan

Peruntukan Pembolehubah Global

Apabila pembolehubah global diisytiharkan, memorinya diperuntukkan sama ada dalam segmen data atau Segmen bss.

  1. Segmen data: Mengandungi pembolehubah global yang dimulakan. Saiznya ditetapkan pada masa penyusunan.
  2. Segmen Bss: Mengandungi pembolehubah global yang tidak dimulakan. Saiznya juga ditetapkan pada masa penyusunan, tetapi kandungannya dimulakan kepada sifar secara lalai.

Oleh itu, pembolehubah global disimpan dalam segmen data atau segmen bss, yang merupakan sebahagian daripada memori statik diperuntukkan kepada program.

Contoh

Dalam contoh yang diberikan, array arr ialah pembolehubah global jenis struct AAA. Ia akan diperuntukkan sama ada dalam segmen data atau segmen bss, bergantung pada sama ada ia dimulakan (mempunyai nilai lalai) atau tidak dimulakan (mengandungi nilai sampah).

Kesimpulan

Ringkasnya, struktur data global dalam C menggunakan memori daripada memori statik yang diperuntukkan kepada program, khususnya daripada segmen data atau segmen bss, yang bukan sebahagian daripada kawasan ingatan timbunan atau timbunan.

Atas ialah kandungan terperinci Di manakah Pembolehubah Global dalam C Menyimpan Memorinya: Timbunan atau Timbunan?. 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