2010-10-03 48 views
0

我有一個程序,深入遞歸n^2層和mallocs一堆內存來連接char * s在一起。如果n足夠大,進程只會被服務器殺死(因爲它消耗的內存太多)。我如何釋放這些內存並仍然有我的數據?這麼多的內存被malloc'd,當我運行我的程序足夠深時,我得到「Killed」

這mallocs看起來像

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

我需要這個數據直線,直到節目結束。我該如何處理這個問題?

+1

你的問題沒有足夠的信息,但無論如何回答:人們經常使用磁盤上的文件(或數據庫),當它們的數據太多以適應RAM時保存它們的數據。 – ChrisW 2010-10-03 18:05:17

+0

您可能需要更改算法來解決此問題。爲了獲得幫助,我們需要更多的細節。 – 2010-10-03 18:05:29

+0

發佈更多你想要做的事情。有可能更多的內存有效的方法來處理它。 – jkerian 2010-10-03 18:13:58

回答

0

沒有深入考慮它,爲什麼你需要內存中的所有數據?你需要幾件事情要做:

  1. 寫入字符的提交
  2. 使用一個全球性的「大師」字符數組,只爲malloc的是,重用下一段記憶。如果這是您目前的設置,請參閱1
  3. 使用valgrind查看是否泄漏了所有內存。
1

你不能。一旦釋放內存,數據就消失了。

你可以做的是更好地利用你有的內存。隨着你發佈的代碼,我想不出一種方法來幫助你管理內存更好,雖然

相關問題