Tôi muốn hiểu điều gì sẽ xảy ra khi kích thước của mảng động được tăng lên.Điều gì sẽ xảy ra khi tăng kích thước của mảng động?
hiểu biết của tôi cho đến nay:
- phần tử mảng hiện tại sẽ không thay đổi.
- Các phần tử mảng mới được khởi tạo thành 0
- Tất cả các phần tử mảng liền kề nhau trong bộ nhớ.
Khi kích thước mảng tăng lên, bộ nhớ thừa sẽ được gắn vào khối bộ nhớ hiện có hay các phần tử hiện có sẽ được sao chép vào khối bộ nhớ hoàn toàn mới?
Việc thay đổi kích thước của mảng động có hậu quả cho con trỏ tham chiếu các phần tử mảng hiện có không?
Xin cảm ơn,
[sửa] Giả định không chính xác xảy ra. (Phần tử mảng mới được khởi tạo 0)
[Tài liệu được thay đổi vào ngày 26 tháng 10] (http://docwiki.embarcadero.com/VCL/e/index.php?title=System.SetLength&diff=414648&oldid=411229), vì vậy mục đã bỏ qua của bạn hiện đã chính xác : "không gian được cấp phát mới được đặt thành 0 hoặc không". –
Câu hỏi là phiên bản nào của Delphi đã được giới thiệu? Các tài liệu mà @Rob liên kết là cho Delphi XE, nhưng tôi có thể thấy các cuộc gọi FillChar (một Rob đề cập trong bình luận của mình để trả lời của tôi) trong DynArraySetLength thủ tục của D2009 là tốt ... –
Mới được phân bổ không gian đã thực sự được khởi tạo đến 0 hoặc không bằng 0 từ D5 trên (đó là những gì tôi có thể dễ dàng kiểm tra). Xem cập nhật cho câu trả lời của tôi. Và có lẽ kể từ khi giới thiệu mảng động như @ David nhận xét về câu trả lời của tôi. –