Video: C - Bài 39: Cấp phát bộ nhớ động. 2025
Mảng tĩnh được cấp phát trên stack, có thể giới hạn khả năng sử dụng của họ. Mảng động được phân bổ trên đống, có nghĩa là chúng chỉ bị giới hạn bởi kích thước bộ nhớ. Phải thừa nhận rằng, bạn sẽ tìm thấy một vài sự khác biệt giữa các mảng động và tĩnh, tuy nhiên mấu chốt ở đây là, mặc dù mảng động cần nhiều công việc hơn vì bạn phải tự quản lý bộ nhớ, nhưng chúng cũng cung cấp thêm tính linh hoạt khi làm việc dữ liệu.
Nhiều hơn khả năng bạn sẽ muốn xử lý dữ liệu phức tạp khi sử dụng mảng động. Ví dụ trong bài báo trực tuyến nhằm mục đích vui lòng bằng cách xem cách bạn có thể sử dụng mảng động với cấu trúc. Dưới đây là ví dụ về mã mà bạn có thể sử dụng:
#include #include using namespace std; struct Employee {string Name; int Tuổi;}; int main () {Nhân viên * DynArray; DynArray = nhân viên mới (nothrow) [3]; DynArray [0]. Tên = "Harvey"; DynArray [0]. Tuổi = 33; DynArray [1]. Tên = "Sally"; DynArray [1]. Tuổi = 26; DynArray [2]. Tên = "Jeff"; DynArray [2]. Tuổi = 52; cout << "hiển thị nội dung Array" << endl; for (int i = 0; i <3; i ++) {cout << "name:" << dynArray [i]. Tên << "tAge:" << dynArray [i]. Age << endl;} xóa [] DynArray; return 0;}
Trong ví dụ này, mã bắt đầu bằng cách tạo một Employee struct có chứa tên nhân viên và tuổi tác. Bạn có thể sử dụng bất kỳ loại container dữ liệu mong muốn - một trong những điều này chỉ xảy ra là một cấu trúc.
Để tạo một mảng động, bạn xác định một con trỏ tới biến mảng. Hành động này đặt biến trên heap chứ không phải stack. Sau đó bạn tạo mảng, trong đó có ba mục Employee trong trường hợp này. Mã điền vào các dữ liệu và sau đó sử dụng một vòng lặp để hiển thị các kết quả trên màn hình. Dưới đây là những gì bạn sẽ thấy khi chạy ví dụ.
Hiển thị Array Tên Nội dung: Harvey Tuổi: 33 Tên: Sally Tuổi: 26 Tên: Jeff Age: 52
Lưu ý rằng bạn truy cập từng thành viên của Employee bằng cách truy cập vào chỉ mục mảng yêu cầu và sau đó sử dụng dấu chấm để chỉ định tên thành viên. Điều quan trọng cần nhớ là các mảng năng động hoạt động như bất kỳ mảng nào khác trong đó bạn truy cập một chỉ mục để có được một mục nhập cụ thể.
Cần thiết để sử dụng xóa [] để giải phóng bộ nhớ được sử dụng bởi DynArray. Nếu không, ứng dụng của bạn sẽ bị rò rỉ bộ nhớ mà cuối cùng sẽ ảnh hưởng đến hiệu suất của hệ thống hoặc ít nhất nó gây ra những điều buồn cười. Bởi vì hệ thống của chúng tôi đã vui vẻ hoạt động đủ, có thể là một ý tưởng tốt để đảm bảo ứng dụng của bạn không 'góp phần cho vấn đề.