Dalam C dan C , pembolehubah statik diperuntukkan dalam segmen tertentu fail boleh laku untuk mengelakkan konflik penamaan antara unit terjemahan yang berbeza. Apabila menyusun berbilang fail sumber, seperti fail foo.c dan bar.c dalam kod yang disediakan, setiap unit terjemahan mencipta salinan pembolehubah statiknya sendiri.
Lokasi tempat pembolehubah statik disimpan bergantung pada sama ada ia dimulakan kepada sifar atau tidak. Statik dimulakan sifar diletakkan dalam segmen .BSS, manakala statik bukan dimulakan sifar masuk ke dalam segmen .DATA.
Dalam contoh yang diberikan, kedua-dua foo dan bar dimulakan kepada nilai bukan sifar. Oleh itu, mereka akan diperuntukkan dalam segmen .DATA. Pengkompil menyimpan ruang dalam segmen .DATA untuk pembolehubah ini dan nilainya disimpan di sana.
Apabila boleh laku dipautkan, kandungan segmen .DATA dan .BSS disalin ke bahagian yang sesuai dalam fail ELF. Segmen .DATA biasanya digabungkan ke dalam bahagian .text (kod), manakala segmen .BSS diperuntukkan dalam kawasan BSS memori program semasa masa jalan.
Dalam rantai alat GCC, lokasi statik pembolehubah boleh diperiksa menggunakan pilihan -Xlinker -d', yang memaparkan bahagian ELF dan kandungannya. Dengan memeriksa bahagian .data dan .bss`, anda boleh mengesahkan peruntukan pembolehubah statik anda dan memastikan ia tidak bercanggah antara satu sama lain.
Atas ialah kandungan terperinci Di manakah Pembolehubah Statik Diperuntukkan dalam C dan C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!