Thấy mọi người trả lời sôi nổi và đầy đủ rồi nhưng đối với những bạn newbie thì sẽ hơi rắc rối nên mình nêu ý kiến đơn giản của mình cho các bạn mới học lập trình dễ hiểu luôn nhé (các pro đừng chém mình)
Trong bộ nhớ được chia làm 4 phần chính:
- Code Segment
- Data Segment
- Heap
- Stack
=> Code segment là nơi lưu trữ mã máy dạng nhị phân. Tức là chương trình bạn code thì bạn code bằng ngôn ngữ tự nhiên của con người (như if, else, for, int, …) nhưng cần phải dịch sang dạng nhị phân (1010111010001 …) thì máy tính mới hiểu được code.
=> Data Segment là nơi chứa các biến tĩnh (như static) và biến toàn cục. (biến nằm ngoài các hàm)
=> Heap là vùng nhớ không do CPU quản lý, lập trình viên sẽ quản lý vùng nhớ này. Tức là vùng nhớ này sẽ quản lý các con trỏ mà bạn cấp phát bộ nhớ. Nói cách khác, vùng nhớ Heap dành cho con trỏ.
=> Stack là vùng nhớ do CPU quản lý, lập trình viên không thể can thiệp vào, nếu cố tình can thiệp sẽ bị lỗi. Vùng nhớ này chứa các biến cục bộ (biến được bao phủ bởi dấu {}
).