batanlp
BỘ NHỚ ĐỘNG TRONG C++
Trong bài viết này, tôi sẽ giới thiệu với các bạn về cách lập trình với con trỏ
(pointer) trong việc cấp phát bộ nhớ động (dynamic memory alocation)
bằng ngôn ngữ C++. Đối với các bạn đã có kinh nghiệm lập trình với C++
thì bài này đối với các bạn chỉ là "a-bờ-cờ" mà thôi. Nhưng với các bạn
mới học C++ thì có lẽ là bổ ích.
Nếu bạn mới học lập trình và làm quen với cấu trúc dữ liệu thì một trong số
những cấu trúc dữ liệu đầu tiên mà bạn "rớ" tới là Stack (ngăn xếp) và
Queue (hàng đợi). Bạn có thể dùng 1 mảng (array) để thiết kế Stack và
Queue. Dùng mảng thì đơn giản, nhưng bạn sẽ gặp một số bất lợi như sau:
Lãng phí bộ nhớ: giả sử bạn khai báo int array_entry[100] thì bạn
sẽ có 1 vùng nhớ cho 100 phần tử, nhưng nếu chương trình của bạn
chỉ thường xuyên dùng có 10 phần tử, và 1 vài lần là dùng đến 100
phần tử thì tức là bạn đã phí phạm 90 phần tử.
Thiếu bộ nhớ: vì tiết kiệm, bạn chỉ khai báo int array_entry[10],
nhưng nếu bạn cần dùng đến 15 phần tử thì...overflow ngay. Chưa hết,
array cần một vùng nhớ liên tục, giả sử máy bạn vẫn còn nhiều bộ nhớ
trống, nhưng không có vùng nhớ trống liên tục nào đủ lớn cho mảng
của bạn. Thế là vẫn...thiếu bộ nhớ.
Và cuối cùng, người ta khi thấy bạn viết như vậy thì coi bạn là dân
amateur, buồn nhỉ? L
Nhưng không sao, bài viết này sẽ giúp bạn vượt qua các trở ngại đó. Bạn sẽ