Без кода, все, что я могу вам дать, это обходной путь.
Попробуйте realloc
использовать память только тогда, когда вам нужно ее увеличить, и удвойте ее по размеру вместо того, чтобы просто добавлять столько байтов, сколько вам нужно. Это очень помогает с фрагментацией. Поскольку вы сказали, что у вас достаточно памяти, не беспокойтесь о том, чтобы освободить ее, когда закончите, просто держите ее там, если это достаточно разумно.
Сделайте своей целью уменьшить фрагментацию любой ценой, поддерживая рабочий набор в 200 МБ, как мне кажется, идеально для сегодняшней вычислительной мощности. Если вы часто превышаете 500 МБ и ваша программа запускается в течение длительного периода времени, вы можете продолжить изучение оптимизации рабочего набора, но до тех пор не беспокойтесь об этом.