Rumah > pembangunan bahagian belakang > C++ > Di manakah Pembolehubah Statik Disimpan dalam Boleh Laksana C dan C?

Di manakah Pembolehubah Statik Disimpan dalam Boleh Laksana C dan C?

Barbara Streisand
Lepaskan: 2024-12-30 12:07:12
asal
198 orang telah melayarinya

Where Are Static Variables Stored in C and C   Executables?

Menyelidiki Penyimpanan Pembolehubah Statik dalam C dan C

Pembolehubah statik memainkan peranan penting dalam pengaturcaraan C dan C, membolehkan data kekal sepanjang hayat sesuatu program. Tetapi di manakah sebenarnya pembolehubah ini disimpan dalam fail boleh laku untuk memastikan tiada perlanggaran nama berlaku?

Pertimbangkan coretan kod berikut:

// foo.c
static int foo = 1;
void fooTest() {
  static int bar = 2;
  foo++;
  bar++;
}

// bar.c
static int foo = 10;
void barTest() {
  static int bar = 20;
  foo++;
  bar++;
}
Salin selepas log masuk

Apabila menyusun dan memautkan fail ini dengan fungsi utama yang memanggil footTest() dan barTest() berulang kali, penyataan printf meningkat secara bebas. Ini menunjukkan bahawa pembolehubah foo dan bar adalah setempat kepada unit terjemahan masing-masing.

Peruntukan Storan Pembolehubah Statik

Peruntukan pembolehubah statik dalam fail boleh laku bergantung pada permulaannya.

  • Dimulakan sifar: Data statik yang dimulakan kepada sifar diletakkan dalam segmen .BSS (Blok Dimulakan oleh Simbol). Segmen ini diisi sifar semasa pelaksanaan program.
  • Bukan dimulakan sifar: Data statik yang dimulakan dengan nilai bukan sifar diletakkan dalam segmen .DATA. Segmen ini mengandungi data yang dimulakan dan dimuatkan ke dalam memori apabila program bermula.

Kebergantungan Rantai Alat

Lokasi storan khusus pembolehubah statik mungkin berbeza bergantung pada rantai alat yang digunakan. Untuk perbincangan ini, mari kita anggap kita menggunakan GNU Compiler Collection (GCC).

Kesimpulan

Pembolehubah statik dalam C dan C disimpan dalam segmen .BSS atau .DATA bagi boleh laku fail, bergantung pada permulaannya. Ini memastikan setiap pembolehubah statik mempunyai lokasi memori yang unik dan menghalang perlanggaran nama.

Atas ialah kandungan terperinci Di manakah Pembolehubah Statik Disimpan dalam Boleh Laksana C dan C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan