He estado jugando con la incrustación de recursos en mi programa C++. Con el fin de hacer esto Hexdump los datos a una matriz simple, es decir¿Liberación de memoria estática? no, eso no puede ser correcto
unsigned char image_png[] ={
0x0a, 0x0b, 0x0c, 0x0d, ...
};
Algunos de estos recursos no se utilizan después de la carga (es decir, que se convierten a otra cosa y luego los datos originales es sólo mayor ... aunque un poco de volumen para la facilidad de distribución podría valer la pena).
Tengo curiosidad por saber si hay una forma de insertar el recurso en el programa, para que no tenga que preocuparme de que el binario pueda encontrar todos sus recursos más importantes, pero luego libérelo una vez que lo haya hecho se usa para que la huella de memoria de tiempo de ejecución tenga un impacto menor.
¿Esto es posible? Si es posible, ¿es algo estúpido tratar de hacer? Por ejemplo, tal vez el sistema operativo mantendrá toda la imagen del programa en la memoria de todos modos (no estoy seguro exactamente cómo funciona).
edición: Para responder a los comentarios, estoy trabajando en Linux (Ubuntu 10.04), pero si hay soluciones multiplataforma me gustaría oírlos
pregunta interesante! – Milan
Saber en qué sistema operativo está trabajando permitiría mejores respuestas. – Novelocrat
Normalmente, el O/S no mantiene todos los ejecutables en la memoria física. Cuando intenta acceder a una parte de su programa por primera vez, se activa un error de página y esa parte se carga desde el disco duro. Si no lo usa durante un tiempo, se eliminará de la memoria física. Intentar acceder de nuevo dará como resultado otro error de página (editar: una falla de página no es nada de qué preocuparse, es como una falla de caché) – Tomaka17