Những gì tôi biết là các biến toàn cục và tĩnh được lưu trữ trong .dataphân đoạn và dữ liệu chưa được khởi tạo nằm trong .bssphân đoạn. Điều tôi không hiểu là tại sao chúng tôi có phân đoạn dành riêng cho các biến chưa được khởi tạo? Nếu một biến chưa được khởi tạo có giá trị được chỉ định tại thời điểm chạy, liệu biến đó có tồn tại chỉ trong .bssphân đoạn không?
Trong chương trình sau đây, alà trong .dataphân đoạn, và blà trong .bssphân đoạn; đúng không? Vui lòng sửa cho tôi nếu sự hiểu biết của tôi là sai.
#include <stdio.h>
#include <stdlib.h>
int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9};
int b[20]; /* Uninitialized, so in the .bss and will not occupy space for 20 * sizeof (int) */
int main ()
{
;
}
Ngoài ra, hãy xem xét chương trình sau,
#include <stdio.h>
#include <stdlib.h>
int var[10]; /* Uninitialized so in .bss */
int main ()
{
var[0] = 20 /* **Initialized, where this 'var' will be ?** */
}