Nếu bạn có biến có thời lượng tĩnh, nó được tạo khi ứng dụng được khởi tạo. Khi ứng dụng chấm dứt đối tượng bị hủy. Không thể kiểm soát thứ tự các đối tượng khác nhau được tạo ra.
Thay đổi sẽ làm cho đối tượng được tạo khi nó được sử dụng lần đầu tiên và (vì nó được phân bổ động) sẽ không bao giờ bị hủy.
Điều này có thể là một điều tốt nếu các đối tượng khác cần đối tượng này khi chúng bị phá hủy.
Cập nhật
Mã gốc truy cập các đối tượng sử dụng biến Data
. Mã mới không phải được sửa đổi theo bất kỳ cách nào. Khi mã sử dụng Data
, trên thực tế, sẽ sử dụng macro Data
, sẽ được mở rộng thành getData()
. Hàm này sẽ trả về một tham chiếu đến đối tượng thực tế (được phân bổ động). Trong thực tế, mã mới sẽ hoạt động như một thay thế thả cho mã cũ, với sự khác biệt đáng chú ý duy nhất là những gì tôi đã mô tả trong câu trả lời gốc ở trên.
có lẽ để tránh một số loại khởi tạo tĩnh vấn đề? – Anycorn
'#define Dữ liệu ...' chỉ yêu cầu sự cố – tenfour
@ Lol4t0: bạn có thể giải thích thêm một chút về nhận xét của mình không? Làm thế nào là nó không thread an toàn? – Lazer