我有一個程序,深入遞歸n^2層和mallocs一堆內存來連接char * s在一起。如果n足夠大,進程只會被服務器殺死(因爲它消耗的內存太多)。我如何釋放這些內存並仍然有我的數據?這麼多的內存被malloc'd,當我運行我的程序足夠深時,我得到「Killed」
這mallocs看起來像
test = (char *)malloc(sizeof(char) * 256);
我需要這個數據直線,直到節目結束。我該如何處理這個問題?
我有一個程序,深入遞歸n^2層和mallocs一堆內存來連接char * s在一起。如果n足夠大,進程只會被服務器殺死(因爲它消耗的內存太多)。我如何釋放這些內存並仍然有我的數據?這麼多的內存被malloc'd,當我運行我的程序足夠深時,我得到「Killed」
這mallocs看起來像
test = (char *)malloc(sizeof(char) * 256);
我需要這個數據直線,直到節目結束。我該如何處理這個問題?
沒有深入考慮它,爲什麼你需要內存中的所有數據?你需要幾件事情要做:
你不能。一旦釋放內存,數據就消失了。
你可以做的是更好地利用你有的內存。隨着你發佈的代碼,我想不出一種方法來幫助你管理內存更好,雖然
你的問題沒有足夠的信息,但無論如何回答:人們經常使用磁盤上的文件(或數據庫),當它們的數據太多以適應RAM時保存它們的數據。 – ChrisW 2010-10-03 18:05:17
您可能需要更改算法來解決此問題。爲了獲得幫助,我們需要更多的細節。 – 2010-10-03 18:05:29
發佈更多你想要做的事情。有可能更多的內存有效的方法來處理它。 – jkerian 2010-10-03 18:13:58