Những gì tôi biết là các biến toàn cục và tĩnh được lưu trữ trong .data
phân đoạn và dữ liệu chưa được khởi tạo nằm trong .bss
phâ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 .bss
phân đoạn không?
Trong chương trình sau đây, a
là trong .data
phân đoạn, và b
là trong .bss
phâ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 ?** */
}