Bài giảng Nhập môn lập trình - Chương 12: Quản lý bộ nhớ
Số trang: 23
Loại file: ppt
Dung lượng: 1.90 MB
Lượt xem: 64
Lượt tải: 0
Xem trước 3 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Chương 12 của bài giảng Nhập môn lập trình trang bị cho người học những hiểu biết về quản lý bộ nhớ. Trong chương này các bạn sẽ cùng tìm hiểu về: Chuyển đổi kiểu (ép kiểu), cấu trúc chương trình C trong bộ nhớ, cấp phát bộ nhớ động, các thao tác trên khối nhớ. Mời các bạn cùng tham khảo.
Nội dung trích xuất từ tài liệu:
Bài giảng Nhập môn lập trình - Chương 12: Quản lý bộ nhớ &&VCVC BB BB Nộidung 1 Chuyển đổi kiểu (ép kiểu) 2 Cấu trúc CT C trong bộ nhớ 3 Cấp phát bộ nhớ động 4 Các thao tác trên khối nhớ NMLTQuảnlýbộnhớ 1 &&VCVC BB BB Nhucầuchuyểnđổikiểu Mọi đối tượng dữ liệu trong C đều có kiểu xác định Biến có kiểu char, int, float, double, … Con trỏ trỏ đến kiểu char, int, float, double, … Xử lý thế nào khi gặp một biểu thức với nhiều kiểu khác nhau? C tự động chuyển đổi kiểu (ép kiểu). Người sử dụng tự chuyển đổi kiểu. NMLTQuảnlýbộnhớ 2 &&VCVC BB BB Chuyểnđổikiểutựđộng Sự tăng cấp (kiểu dữ liệu) trong biểu thức Các thành phần cùng kiểu • Kết quả là kiểu chung • Ví dụ: int / int int, float / float float Các thành phần khác kiểu • Kết quả là kiểu bao quát nhất • char < int < long < float < double • Ví dụ: int / float float / float, … • Lưu ý, chỉ chuyển đổi tạm thời (nội bộ). NMLTQuảnlýbộnhớ 3 &&VCVC BB BB Chuyểnđổikiểutựđộng Phép gán = ; BT ở vế phải luôn được tăng cấp (hay giảm cấp) tạm thời cho giống kiểu với BT ở vế trái. int i; float f = 1.23; i = f; // f tạm thời thành int f = i; // i tạm thời thành float Có thể làm mất tính chính xác của số nguyên khi chuyển sang số thực hạn chế! int i = 3; float f; f = i; // f = 2.999995 NMLTQuảnlýbộnhớ 4 &&VCVC BB BB Chuyểnđổitườngminh(épkiểu) Ý nghĩa Chủ động chuyển đổi kiểu (tạm thời) nhằm tránh những kết quả sai lầm. Cú pháp () Ví dụ int x1 = 1, x2 = 2; float f1 = x1 / x2; // f1 = 0.0 float f2 = (float)x1 / x2; // f2 = 0.5 float f3 = (float)(x1 / x2); // f3 = 0.0 NMLTQuảnlýbộnhớ 5 &&VCVC BB BB Cấpphátbộnhớtĩnhvàđộng Cấp phát tĩnh (static memory allocation) Khai báo biến, cấu trúc, mảng, … Bắt buộc phải biết trước cần bao nhiều bộ nhớ lưu trữ tốn bộ nhớ, không thay đổi được kích thước, … Cấp phát động (dynamic memory allocation) Cần bao nhiêu cấp phát bấy nhiêu. Có thể giải phóng nếu không cần sử dụng. Sử dụng vùng nhớ ngoài chương trình (cả bộ nhớ ảo virtual memory). NMLTQuảnlýbộnhớ 6 &&VCVC BB BB CấutrúcmộtCTCtrongbộnhớ Toàn bộ tập tin chương trình sẽ được nạp vào bộ nhớ tại vùng nhớ còn trống, gồm 4 phần: STACK STACK Lưuđốitượngcụcbộ LastInFirstOut LastInFirstOut Khithựchiệnhàm Vùngnh Vùngnhớớtr trốống ng Vùngcấpphátđộng HEAP HEAP (RAMtrốngvàbộnhớảo) ĐĐốốititượngtoànc ượngtoàncụụcc Vùngcấppháttĩnh &tĩnh &tĩnh (kíchthướccốđịnh) Gồmcáclệnhvàhằng Mãchươngtrình Mãchươngtrình (kíchthướccốđịnh) NMLTQuảnlýbộnhớ 7 &&VCVC BB BB Cấpphátbộnhớđộng Thuộc thư viện hoặc malloc calloc realloc free Trong C++ new delete NMLTQuảnlýbộnhớ 8 &&VCVC BB BB Cấpphátbộnhớđộng void*malloc(size_tsize) void*malloc(size_tsize) Cấp phát trong HEAP một vùng nhớ size (bytes) size_tthaychounsigned(trong) Contrỏđếnvùngnhớmớiđượccấpphát NULLnếukhôngđủbộnhớ int*p=(int*)malloc(10*sizeof(int)); if(p==NULL) printf(“Khôngđủbộnhớ!”); NMLTQuảnlýbộnhớ 9 &&VCVC BB BB Cấpp ...
Nội dung trích xuất từ tài liệu:
Bài giảng Nhập môn lập trình - Chương 12: Quản lý bộ nhớ &&VCVC BB BB Nộidung 1 Chuyển đổi kiểu (ép kiểu) 2 Cấu trúc CT C trong bộ nhớ 3 Cấp phát bộ nhớ động 4 Các thao tác trên khối nhớ NMLTQuảnlýbộnhớ 1 &&VCVC BB BB Nhucầuchuyểnđổikiểu Mọi đối tượng dữ liệu trong C đều có kiểu xác định Biến có kiểu char, int, float, double, … Con trỏ trỏ đến kiểu char, int, float, double, … Xử lý thế nào khi gặp một biểu thức với nhiều kiểu khác nhau? C tự động chuyển đổi kiểu (ép kiểu). Người sử dụng tự chuyển đổi kiểu. NMLTQuảnlýbộnhớ 2 &&VCVC BB BB Chuyểnđổikiểutựđộng Sự tăng cấp (kiểu dữ liệu) trong biểu thức Các thành phần cùng kiểu • Kết quả là kiểu chung • Ví dụ: int / int int, float / float float Các thành phần khác kiểu • Kết quả là kiểu bao quát nhất • char < int < long < float < double • Ví dụ: int / float float / float, … • Lưu ý, chỉ chuyển đổi tạm thời (nội bộ). NMLTQuảnlýbộnhớ 3 &&VCVC BB BB Chuyểnđổikiểutựđộng Phép gán = ; BT ở vế phải luôn được tăng cấp (hay giảm cấp) tạm thời cho giống kiểu với BT ở vế trái. int i; float f = 1.23; i = f; // f tạm thời thành int f = i; // i tạm thời thành float Có thể làm mất tính chính xác của số nguyên khi chuyển sang số thực hạn chế! int i = 3; float f; f = i; // f = 2.999995 NMLTQuảnlýbộnhớ 4 &&VCVC BB BB Chuyểnđổitườngminh(épkiểu) Ý nghĩa Chủ động chuyển đổi kiểu (tạm thời) nhằm tránh những kết quả sai lầm. Cú pháp () Ví dụ int x1 = 1, x2 = 2; float f1 = x1 / x2; // f1 = 0.0 float f2 = (float)x1 / x2; // f2 = 0.5 float f3 = (float)(x1 / x2); // f3 = 0.0 NMLTQuảnlýbộnhớ 5 &&VCVC BB BB Cấpphátbộnhớtĩnhvàđộng Cấp phát tĩnh (static memory allocation) Khai báo biến, cấu trúc, mảng, … Bắt buộc phải biết trước cần bao nhiều bộ nhớ lưu trữ tốn bộ nhớ, không thay đổi được kích thước, … Cấp phát động (dynamic memory allocation) Cần bao nhiêu cấp phát bấy nhiêu. Có thể giải phóng nếu không cần sử dụng. Sử dụng vùng nhớ ngoài chương trình (cả bộ nhớ ảo virtual memory). NMLTQuảnlýbộnhớ 6 &&VCVC BB BB CấutrúcmộtCTCtrongbộnhớ Toàn bộ tập tin chương trình sẽ được nạp vào bộ nhớ tại vùng nhớ còn trống, gồm 4 phần: STACK STACK Lưuđốitượngcụcbộ LastInFirstOut LastInFirstOut Khithựchiệnhàm Vùngnh Vùngnhớớtr trốống ng Vùngcấpphátđộng HEAP HEAP (RAMtrốngvàbộnhớảo) ĐĐốốititượngtoànc ượngtoàncụụcc Vùngcấppháttĩnh &tĩnh &tĩnh (kíchthướccốđịnh) Gồmcáclệnhvàhằng Mãchươngtrình Mãchươngtrình (kíchthướccốđịnh) NMLTQuảnlýbộnhớ 7 &&VCVC BB BB Cấpphátbộnhớđộng Thuộc thư viện hoặc malloc calloc realloc free Trong C++ new delete NMLTQuảnlýbộnhớ 8 &&VCVC BB BB Cấpphátbộnhớđộng void*malloc(size_tsize) void*malloc(size_tsize) Cấp phát trong HEAP một vùng nhớ size (bytes) size_tthaychounsigned(trong) Contrỏđếnvùngnhớmớiđượccấpphát NULLnếukhôngđủbộnhớ int*p=(int*)malloc(10*sizeof(int)); if(p==NULL) printf(“Khôngđủbộnhớ!”); NMLTQuảnlýbộnhớ 9 &&VCVC BB BB Cấpp ...
Tìm kiếm theo từ khóa liên quan:
Nhập môn lập trình Bài giảng Nhập môn lập trình Ngôn ngữ lập trình Chuyển đổi kiểu Quản lý bộ nhớ Cấp phát bộ nhớ độngGợi ý tài liệu liên quan:
-
Đề cương chi tiết học phần Cấu trúc dữ liệu và giải thuật (Data structures and algorithms)
10 trang 317 0 0 -
Giáo trình Lập trình hướng đối tượng: Phần 2
154 trang 275 0 0 -
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 265 0 0 -
Bài thuyết trình Ngôn ngữ lập trình: Hệ điều hành Window Mobile
30 trang 265 0 0 -
Đề tài nguyên lý hệ điều hành: Nghiên cứu tìm hiểu về bộ nhớ ngoài trong hệ điều hành Linux
19 trang 245 0 0 -
Giáo trình Lập trình cơ bản với C++: Phần 1
77 trang 232 0 0 -
Bài giảng Một số hướng nghiên cứu và ứng dụng - Lê Thanh Hương
13 trang 225 0 0 -
Giáo án Tin học lớp 11 (Trọn bộ cả năm)
125 trang 217 1 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 207 0 0 -
Bài tập lập trình Windows dùng C# - Bài thực hành
13 trang 184 0 0