Hướng đối tượng Sử dụng bộ nhớ
SỬ DỤNG BỘ NHỚ SỬ DỤNG BỘ NHỚ TRONG C++TRONG C++ HeapUnitialized dataInitialized dataCodeStackVương Đức Bình - Tổ bộ môn CNTT - Trường CĐBTHình ảnh bộ nhớ khi chương trình C++ đang thực thiHình ảnh bộ nhớ khi chương trình C++ đang thực thiVùng nhớ thấpVùng nhớ caoC++ chia bộ nhớ thành 4 vùng: • Vùng mã chương trình (Code area)• Vùng dữ liệu (Data area)• Vùng Heap• Vùng Stack HeapUnitialized dataInitialized dataCodeStackVương Đức Bình - Tổ bộ môn CNTT - Trường CĐBTCó gì trong vùng mã chương trình ?Có gì trong vùng mã chương trình ?Chương trình nguồn:int my_int, his_int;main( ){my_int = 5;my_int++;his_int -= 10;}Chương trình đã biên dịch thành mã hợp ngữ cho 80x86:MOV my_int,5INC my_intSUB his_int,10MOV my_int,5INC my_intSUB his_int,10 HeapUnitialized dataInitialized dataCodeStackVương Đức Bình - Tổ bộ môn CNTT - Trường CĐBTCó gì trong vùng dữ liệu ?Có gì trong vùng dữ liệu ?Chương trình nguồn:int your_int, my_int, his_int=3;main( ){my_int = 5;my_int++;his_int -= 10;}void my_func(void){int her_int; static int s_int=3;her_int=5;s_int++;}MOV my_int,5INC my_intSUB his_int,10his_int =3your_int=0my_int=01. Mọi biến không được khởi tạo đều xếp vào vùng Unitialized area và đều được gán giá trị 0.2. Không phải biến nào cũng được đặt vào vùng Data. Chỉ có 3 loại biến được đặt vào vùng này:•Biến toàn cục•Biến tĩnh.•Mảng được khởi tạo và cấu trúc (struct / class).Các biến her_int và s_int sẽ được đặt vào đây khi hàm my_func được gọi và có thể bị tái định vị (ghi đè/bố trí lại - được gọi là các biến tự động: automatic variables) trừ khi khai báo bằng từ khóa static. HeapUnitialized dataInitialized dataCodeStackVương Đức Bình - Tổ bộ môn CNTT - Trường CĐBTCó gì trong vùng nhớ Heap ?Có gì trong vùng nhớ Heap ?# include <alloc.h>int my_int, his_int=3;main( ){char *my_data;my_int=5;my_int++;his_int -=10;my_data=malloc(10);}my_data[10]his_int=3my_int=0Mảng này chỉ được bố trí khi câu lệnh này được thực thiMOV my_int,5INC my_intSUB his_int,10*my_data HeapUnitialized dataInitialized dataCodeStackVương Đức Bình - Tổ bộ môn CNTT - Trường CĐBTCó gì trong vùng nhớ Stack ?Có gì trong vùng nhớ Stack ?•Chương trình C++ dùng stack cho các mục đích sau:–Chứa các biến tự động.–Chuyển giao tham số cho các hàm.–Chứa các địa chỉ trở về. HeapUnitialized dataInitialized dataCodeStackVương Đức Bình - Tổ bộ môn CNTT - Trường CĐBTTóm tắtTóm tắtPROGRAM CODEINITIALIZED STATIC VARIABLESINITIALIZED GLOBAL VARIABLESUNITIALIZED STATIC VARIABLESUNITIALIZED GLOBAL VARIABLESVARIABLES ALLOCATED WITH new, malloc(), farmalloc(),realloc() and calloc()AUTOMATIC VARIABLES.PASSING PARAMETERS USE BY FUNCTION CALL.RETURN ADDESSES. . SỬ DỤNG BỘ NHỚ SỬ DỤNG BỘ NHỚ TRONG C++TRONG C++ HeapUnitialized dataInitialized dataCodeStackVương Đức Bình - Tổ bộ môn CNTT - Trường CĐBTHình ảnh bộ. CĐBTHình ảnh bộ nhớ khi chương trình C++ đang thực thiHình ảnh bộ nhớ khi chương trình C++ đang thực thiVùng nhớ thấpVùng nhớ caoC++ chia bộ nhớ thành 4 vùng: