Добро пожаловать в удивительный мир фрагментации кучи. Короче говоря, вам нужен непрерывный кусок памяти, чтобы удовлетворить выделение, а не только достаточно свободных байтов.
В качестве примера представьте пустую кучу объемом 1 МБ. Теперь представьте, что прямо в середине этого 1 МБ выделено 1 КБ. Даже при том, что у вас есть 99,9% свободного места, вы не можете выделить что-то более 500K, потому что оно должно быть смежным. Переместите выделение в 1 Кб, и вы сможете выделить гораздо больше, но в патологических случаях у вас может оказаться гораздо больше свободной памяти, чем вы можете выделить.
В вашем случае, держу пари, что если вы попытаетесь выделить 2000 килобайт, это будет отлично работать. Это даст вам знать, если вы имеете дело с фрагментацией или чем-то еще.