Quiero implementar mi propio sistema de administración de memoria dinámica para agregar nuevas características que ayudan a administrar la memoria en C++.¿Cómo se implementa Malloc y Free?
Uso Windows (XP) y Linux (Ubuntu). ¿Qué se necesita para implementar funciones como 'malloc' y 'free'? Creo que tengo que usar las llamadas al sistema de nivel más bajo.
Para Windows, he encontrado las funciones: GetProcessHeap, HeapAlloc, HeapCreate, HeapDestroy y HeapFree.
Para Linux, no he encontrado ninguna llamada al sistema para la administración de heap. En Linux, malloc y free son llamadas al sistema, ¿no?
Gracias
Editar:
C++ no proporciona recolector de basura y el recolector de basura es lento. Algunas asignaciones son fáciles de liberar, pero hay asignaciones que necesitan un recolector de basura.
Quiero implementar estas funciones y agregar nuevas funciones:
* Siempre que se llame a free(), compruebe si el puntero pertenece al montón.
* Ayuda con la recolección de basura. Tengo que almacenar cierta información sobre el bloque asignado.
* Usar varios montones (HeapCreate/HeapDestroy en Windows). Puedo eliminar un montón completo con sus bloques asignados rápidamente.
Debería consultar los asignados de pool de boost: http://www.boost.org/doc/libs/1_43_0/libs/pool/doc/index.html –
¿Está seguro de que HeapAlloc es una llamada de sistema (kernel)? Esto bien puede implementarse desde el lado del usuario y desencadenar alguna función privada oculta del kernel cuando el proceso necesita más memoria. – doron
Squall: esto suena extrañamente como una pregunta de tarea de la redacción. ¿sí? ¿no? –