Bộ nhớ trong chương trình C

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int b = 3;

int main() {
int a = 4;
printf("The address of a is 0x%08x\n",&a);
printf("The address of b is 0x%08x\n",&b);

    return 0;
}
The address of a is 0x0022fe4c
The address of b is 0x00403010

--------------------------------
Process exited after 0.003875 seconds with return value 0
Press any key to continue . . . _

Mọi người cho em hỏi vì sao địa chỉ của biến global lại cao hơn địa chỉ của biến nằm trong stack nhỉ, Theo em được biết thì biến global được khởi tạo giá trị được lưu trong vùng nhớ data có địa chỉ bộ nhớ thấp hơn địa chỉ của stack .

1 Like

Theo bạn thế nào là cao hơn, thấp hơn. :slight_smile:

2 Likes

so sánh địa chỉ đó b.

Cũng thấy vô lý nhỉ ::))
https://cpp.daynhauhoc.com/8/10-phan-loai-cac-vung-nho-stack-va-heap/

1 Like

chắc là kiến trúc máy tính và trình biên dịch mỗi thời một khác?

1 Like

Sơ đồ này của Linux.

Stack trong Windows sẽ thấp hơn Heap. Program Image cao hơn Heap và như vậy global sẽ cao hơn.

8 Likes

À ra là vậy :slight_smile:
Cứ tưởng là tụi nó có quy tắc chung thống nhất nhau.

2 Likes

https://www.tenouk.com/visualcplusmfc/visualcplusmfc20.html
Chôm cái hình cho dễ nhìn. :kissing_smiling_eyes:

5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?