Tôi đã chơi xung quanh bằng cách nhúng tài nguyên vào chương trình C++ của mình. Để làm được điều này, tôi hexdump các dữ liệu vào một mảng đơn giản, ví dụ:Giải phóng bộ nhớ tĩnh? không, điều đó không thể đúng
unsigned char image_png[] ={
0x0a, 0x0b, 0x0c, 0x0d, ...
};
Một số các nguồn lực không được sử dụng sau khi tải (tức là họ nhận được chuyển đổi sang cái gì khác và sau đó là dữ liệu ban đầu chỉ là số lượng lớn ... mặc dù một lượng nhỏ hàng loạt để dễ phân phối có thể đáng giá).
Tôi tò mò nếu có cách nhúng tài nguyên vào chương trình, để tôi không phải lo lắng về việc nhị phân có thể tìm thấy tất cả tài nguyên quan trọng nhất, nhưng sau đó giải phóng nó sau khi hoàn thành đang được sử dụng để dấu chân bộ nhớ thời gian chạy mất ít hit hơn.
Điều này có khả thi không? Nếu nó là có thể, nó là một điều ngu ngốc để cố gắng làm gì? Ví dụ, có lẽ os sẽ giữ toàn bộ hình ảnh chương trình trong bộ nhớ anyway (Tôi không chắc chắn chính xác cách thức hoạt động).
chỉnh sửa: Để trả lời các ý kiến, tôi đang làm việc trên Linux (Ubuntu 10.04), nhưng nếu có những giải pháp đa nền tảng Tôi rất thích nghe họ
câu hỏi thú vị! – Milan
Biết hệ điều hành nào bạn đang làm việc sẽ cho phép các câu trả lời tốt hơn. – Novelocrat
Thông thường, O/S không giữ tất cả các tệp thực thi trong bộ nhớ vật lý. Khi bạn cố truy cập một phần chương trình của mình lần đầu tiên, lỗi trang được kích hoạt và phần đó được tải từ đĩa cứng. Nếu bạn không sử dụng nó trong một thời gian, nó sẽ bị xóa khỏi bộ nhớ vật lý. Cố gắng truy cập lại nó sẽ dẫn đến lỗi trang khác (chỉnh sửa: lỗi trang không có gì phải lo lắng, nó giống như lỗi bộ nhớ cache) – Tomaka17