Khái quát về cấu trúc dữ liệu phần 2
Số trang: 8
Loại file: pdf
Dung lượng: 205.79 KB
Lượt xem: 20
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
4.2 Mảng và quản lý bộ nhớ ₫ộngMảng cho phép biểu diễn và quản lý dữ liệu một cách khá hiệu quả:— Đọc và ghi dữ liệu rất nhanh qua chỉ số hoặc qua ₫ịa chỉ — Tiết kiệm bộ nhớ
Nội dung trích xuất từ tài liệu:
Khái quát về cấu trúc dữ liệu phần 2 4.2 Mảng và quản lý bộ nhớ ₫ộng Mảng cho phép biểu diễn và quản lý dữ liệu một cách khá hiệu quả: — Đọc và ghi dữ liệu rất nhanh qua chỉ số hoặc qua ₫ịa chỉ — Tiết kiệm bộ nhớ Các vấn ₫ề của mảng tĩnh: VD: Student student_list[100]; — Số phần tử phải là hằng số (biết trước khi biên dịch, người sử dụng không thể nhập số phần tử, không thể cho số phần từ là một biến) => kém linh hoạt© 2004, HOÀNG MINH SƠN — Chiếm chỗ cứng trong ngăn xếp (₫ối với biến cục bộ) hoặc trong bộ nhớ dữ liệu chương trình (₫ối với biến toàn cục) => sử dụng bộ nhớ kém hiệu quả, kém linh hoạt 9 Chương 4: Khái quát về cấu trúc dữ liệu Mảng ₫ộng Mảng ₫ộng là một mảng ₫ược cấp phát bộ nhớ theo yêu cầu, trong khi chương trình chạy #include /* C */ int n = 50; ... float* p1= (float*) malloc(n*sizeof(float)); /* C */ double* p2= new double[n]; // C++ Sử dụng con trỏ ₫ể quản lý mảng ₫ộng: Cách sử dụng không khác so với mảng tĩnh p1[0] = 1.0f; p2[0] = 2.0;© 2004, HOÀNG MINH SƠN Sau khi sử dụng xong => giải phóng bộ nhớ: free(p1); /* C */ delete [] p2; // C++ 10 Chương 4: Khái quát về cấu trúc dữ liệu Cấp phát và giải phóng bộ nhớ ₫ộng C: — Hàm malloc() yêu cầu tham số là số byte, trả về con trỏ không kiểu (void*) mang ₫ịa chỉ vùng nhớ mới ₫ược cấp phát (nằm trong heap), trả về 0 nếu không thành công. — Hàm free() yêu cầu tham số là con trỏ không kiểu (void*), giải phóng vùng nhớ có ₫ịa chỉ ₫ưa vào C++: — Toán tử new chấp nhận kiểu dữ liệu phần tử kèm theo số lượng phần tử của mảng cần cấp phát bộ nhớ (trong vùng heap), trả về con trỏ có kiểu, trả về 0 nếu không thành công. — Toán tử delete[] yêu cầu tham số là con trỏ có kiểu.© 2004, HOÀNG MINH SƠN — Toán tử new và delete còn có thể áp dụng cho cấp phát và giải phóng bộ nhớ cho một biến ₫ơn, một ₫ối tượng chứ không nhất thiết phải một mảng. 11 Chương 4: Khái quát về cấu trúc dữ liệu Một số ₫iều cần lưu ý Con trỏ có vai trò quản lý mảng (₫ộng), chứ con trỏ không phải là mảng (₫ộng) Cấp phát bộ nhớ và giải phóng bộ nhớ chứ không phải cấp phát con trỏ và giải phóng con trỏ Chỉ giải phóng bộ nhớ một lần int* p; p[0] = 1; // never do it new(p); // access violation! p = new int[100]; // OK p[0] = 1; // OK int* p2=p; // OK delete[] p2; // OK© 2004, HOÀNG MINH SƠN p[0] = 1; // access violation! delete[] p; // very bad! p = new int[50]; // OK, new array ... 12 Chương 4: Khái quát về cấu trúc dữ liệu Cấp phát bộ nhớ ₫ộng cho biến ₫ơn Ý nghĩa: Các ₫ối tượng có thể ₫ược tạo ra ₫ộng, trong khi chương trình chạy (bổ sung sinh viên vào danh sách, vẽ thêm một hình trong bản vẽ, bổ sung một khâu trong hệ thống,...) Cú pháp int* p = new int; *p = 1; p[0]= 2; // the same as above p[1]= 1; // access violation! int* p2 = new ...
Nội dung trích xuất từ tài liệu:
Khái quát về cấu trúc dữ liệu phần 2 4.2 Mảng và quản lý bộ nhớ ₫ộng Mảng cho phép biểu diễn và quản lý dữ liệu một cách khá hiệu quả: — Đọc và ghi dữ liệu rất nhanh qua chỉ số hoặc qua ₫ịa chỉ — Tiết kiệm bộ nhớ Các vấn ₫ề của mảng tĩnh: VD: Student student_list[100]; — Số phần tử phải là hằng số (biết trước khi biên dịch, người sử dụng không thể nhập số phần tử, không thể cho số phần từ là một biến) => kém linh hoạt© 2004, HOÀNG MINH SƠN — Chiếm chỗ cứng trong ngăn xếp (₫ối với biến cục bộ) hoặc trong bộ nhớ dữ liệu chương trình (₫ối với biến toàn cục) => sử dụng bộ nhớ kém hiệu quả, kém linh hoạt 9 Chương 4: Khái quát về cấu trúc dữ liệu Mảng ₫ộng Mảng ₫ộng là một mảng ₫ược cấp phát bộ nhớ theo yêu cầu, trong khi chương trình chạy #include /* C */ int n = 50; ... float* p1= (float*) malloc(n*sizeof(float)); /* C */ double* p2= new double[n]; // C++ Sử dụng con trỏ ₫ể quản lý mảng ₫ộng: Cách sử dụng không khác so với mảng tĩnh p1[0] = 1.0f; p2[0] = 2.0;© 2004, HOÀNG MINH SƠN Sau khi sử dụng xong => giải phóng bộ nhớ: free(p1); /* C */ delete [] p2; // C++ 10 Chương 4: Khái quát về cấu trúc dữ liệu Cấp phát và giải phóng bộ nhớ ₫ộng C: — Hàm malloc() yêu cầu tham số là số byte, trả về con trỏ không kiểu (void*) mang ₫ịa chỉ vùng nhớ mới ₫ược cấp phát (nằm trong heap), trả về 0 nếu không thành công. — Hàm free() yêu cầu tham số là con trỏ không kiểu (void*), giải phóng vùng nhớ có ₫ịa chỉ ₫ưa vào C++: — Toán tử new chấp nhận kiểu dữ liệu phần tử kèm theo số lượng phần tử của mảng cần cấp phát bộ nhớ (trong vùng heap), trả về con trỏ có kiểu, trả về 0 nếu không thành công. — Toán tử delete[] yêu cầu tham số là con trỏ có kiểu.© 2004, HOÀNG MINH SƠN — Toán tử new và delete còn có thể áp dụng cho cấp phát và giải phóng bộ nhớ cho một biến ₫ơn, một ₫ối tượng chứ không nhất thiết phải một mảng. 11 Chương 4: Khái quát về cấu trúc dữ liệu Một số ₫iều cần lưu ý Con trỏ có vai trò quản lý mảng (₫ộng), chứ con trỏ không phải là mảng (₫ộng) Cấp phát bộ nhớ và giải phóng bộ nhớ chứ không phải cấp phát con trỏ và giải phóng con trỏ Chỉ giải phóng bộ nhớ một lần int* p; p[0] = 1; // never do it new(p); // access violation! p = new int[100]; // OK p[0] = 1; // OK int* p2=p; // OK delete[] p2; // OK© 2004, HOÀNG MINH SƠN p[0] = 1; // access violation! delete[] p; // very bad! p = new int[50]; // OK, new array ... 12 Chương 4: Khái quát về cấu trúc dữ liệu Cấp phát bộ nhớ ₫ộng cho biến ₫ơn Ý nghĩa: Các ₫ối tượng có thể ₫ược tạo ra ₫ộng, trong khi chương trình chạy (bổ sung sinh viên vào danh sách, vẽ thêm một hình trong bản vẽ, bổ sung một khâu trong hệ thống,...) Cú pháp int* p = new int; *p = 1; p[0]= 2; // the same as above p[1]= 1; // access violation! int* p2 = new ...
Tìm kiếm theo từ khóa liên quan:
quản trị dữ liệu hướng dẫn học cơ sở dữ liệu tài liệu cơ sở dữ liệu hướng dẫn quản lý dữ liệu kỹ năng quản trị dữ liệuGợi ý tài liệu liên quan:
-
Đáp án đề thi học kỳ 2 môn cơ sở dữ liệu
3 trang 311 1 0 -
Phân tích thiết kế hệ thống - Biểu đồ trạng thái
20 trang 285 0 0 -
PHÂN TÍCH THIẾT KẾ HỆ THỐNG XÂY DỰNG HỆ THỐNG ĐẶT VÉ TÀU ONLINE
43 trang 281 2 0 -
6 trang 170 0 0
-
Hướng dẫn tạo file ghost và bung ghost
12 trang 152 0 0 -
Giáo trình cơ sở dữ liệu quan hệ_3
26 trang 106 0 0 -
Hướng dẫn sử dụng Mapinfo Professional-Phần cơ bản
57 trang 84 0 0 -
Bài giảng Cơ sở dữ liệu: Chương 3 - ThS. Hoàng Mạnh Hà
67 trang 68 0 0 -
150 trang 68 0 0
-
Cách sao lưu và phục hồi dữ liệu bằng Norton Ghost
8 trang 58 0 0