2012-08-27 51 views
1

我有一個命令行應用程序,它在shell上執行時會列出從數據庫讀取的輸出。並且它獲得了這個信息塊的內存分配和免費正在完成。 當我執行命令(其輸出將跨越6000頁)時,它會正確列出數據。 但是(僅在AIX中)當我發出'command |在顯示隨機數量的頁面之後,在應用程序中獲取數據塊的內存分配失敗。 (在相同的數據中,相同的命令實現與更多的工作正常在Linux中)。 任何想法爲什麼在AIX中它失敗了?任何人都知道AIX中的內存分配標準?爲什麼管道輸出更多的命令會導致應用程序內存分配失敗?AIX:在應用程序中將應用程序命令輸出管道連接到更多結果malloc失敗

+0

您好,非常感謝您的閱讀和張貼您的意見。 1.我們已經檢查了可能的內存泄漏的代碼,但是我們沒有找到任何內存泄漏。 2.在具有相同數據的Linux中,它工作正常,對於Linux和AIX來說,源代碼都是相同的。3.純命令執行不是問題4.只有在使用(| more)執行命令時,纔會觀察到malloc失敗。因此我覺得這與AIX內存管理有關。 –

+0

如果應用程序出現問題,則在沒有(|更多)的情況下執行命令時,應該導致malloc失敗。但是,如果沒有將輸出重定向到「更多命令」,則不會觀察到malloc失敗 –

回答

0

不清楚究竟是什麼故障。你是否遇到seg錯誤或者是malloc返回0表示你的內存不足?

錯誤可能存在於AIX庫中,但它可能很容易在您的應用程序中出現。

去這裏:http://pic.dhe.ibm.com/infocenter/aix/v6r1/index.jsp(或頁面是適合您的水平)

搜索「的malloc調試」。這些設施沒有出血的邊緣,但它們相當好,完整。有了一些時間和注意力之後,你可以追蹤內存泄漏並在釋放內存後使用內存(這聽起來就像這裏的情況)。

它也很好地審查可用的APARs爲您的級別尋找類似的聲音。

還有第三方工具,如零錯誤http://www.zerofault.com/index.html和Purify(看起來像IBM購買)http://www-01.ibm.com/software/awdtools/purify/unix/sysreq/幫助。

祝你好運

相關問題