Después de leer this question acerca del comportamiento aparentemente degenerado para el asignador de memoria de Windows, y recordando a this paper sobre la construcción de las entradas de peor caso para implementaciones de quicksort, comencé a preguntarme: ¿sería posible construir un programa que, dado una memoria de caja negra asignador, obliga a que asignador falle una solicitud de asignación incluso cuando todavía hay suficiente memoria disponible en el sistema? Es decir, ¿es posible tomar un asignador de memoria de caja negra y forzarlo a fallar?¿Un "adversario asesino" para los asignadores de memoria?
Sé que esto se puede hacer asignando y liberando memoria en un patrón de tablero de ajedrez para forzar la fragmentación masiva, por lo que una solución ideal causaría una falla con el menor número total de bytes asignados en el momento de la falla . Con respecto a la publicación original que inspiró esto, en teoría podría ser posible causar una falla con cero bytes asignados si el asignador de memoria tiene una falla interna.
¿Alguna idea/idea sobre cómo hacer esto?
Especifique a qué se refiere con black-box. ¿Tiene el adversario acceso a las direcciones asignadas? –
Sí, puede ver las direcciones asignadas, pero no puede determinar, por ejemplo, qué tamaños de bloque son, o en qué listas se agrupan los bloques, por ejemplo. – templatetypedef
Vaya, una pregunta malvada. +1. –