Так много памяти в malloc'е, что я получаю "Kill" при запуске моей программы достаточно глубоко - PullRequest
0 голосов
/ 03 октября 2010

У меня есть программа, которая проходит n ^ 2 уровня глубины рекурсии и выделяет кучу памяти для объединения символов вместе.При достаточно большом n процесс просто уничтожается сервером (так как он потребляет слишком много памяти).Как я могу освободить эту память и сохранить мои данные?

Это malloc выглядит как

test = (char *)malloc(sizeof(char) * 256);

Мне нужны эти данные прямо до конца программы.Как я могу справиться с этим?

Ответы [ 2 ]

1 голос
/ 03 октября 2010

Вы не можете. Как только вы освободите память, данные исчезнут.

Что вы можете сделать, это лучше использовать имеющуюся память. С кодом, который вы разместили, я не могу придумать, как помочь вам лучше управлять памятью

0 голосов
/ 03 октября 2010

Не задумываясь об этом, зачем вам все данные в памяти?Несколько вещей, которые вам нужно сделать:

  1. Записать символы в файл
  2. использовать глобальный "главный" массив символов и только для этого использовать malloc, повторно использовать память для следующего сегмента.Если это ваша текущая настройка, см. 1
  3. Используйте valgrind, чтобы проверить, не утечка ли у вас всей этой памяти.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...