2012-09-21 51 views
5

我用opencv編寫我的項目c。 我想打印有關分配的內存或我的程序使用的內存的信息。 有沒有一個函數,給我關於內存的信息? 最後,我使用Qt for Linux和Windows,我如何獲得我的程序分配的內存大小?

在此先感謝。

+0

此之前的線程有一些想法http://stackoverflow.com/questions/6192531/best-strategy-for-profiling-memory-usage-of-my-code-open-source-and-3rd-party – Ari

回答

4

您可以編寫包裝到mallocfree,以跟蹤您使用的內存量。

編輯:如果您還想攔截對外部庫中的malloc和free的調用,則必須在共享庫中定義它們並在libc之前加載它。你如何做到這一點取決於你的操作系統。

+0

如果你加載了一個庫,並且使用瞭解包的'malloc',那麼你的程序使用的內存是不是? –

+0

你可以給我關於malloc的例子作爲包裝和免費。 – Aym

+0

@RemusRusanu確實有可能。可以直接調用OS內存預留功能。像'sbrk'(雖然沒有推薦,因爲它干擾了一些malloc實現)。現代malloc使用的'memmap',並給出了隔離的mem塊。 Win32上的'VirtualAlloc',同樣的概念。或者是「NTHeap」的東西。 –

4

在Linux上,你看看your own process info pseudo-file

/proc/[pid]/statm 
Provides information about memory usage, measured in pages. The columns are: 
size  total program size 
      (same as VmSize in /proc/[pid]/status) 
resident resident set size 
      (same as VmRSS in /proc/[pid]/status) 
share  shared pages (from shared mappings) 
text  text (code) 
lib  library (unused in Linux 2.6) 
data  data + stack 
dt   dirty pages (unused in Linux 2.6) 

在Windows上,你看看你自己的進程Process Object性能計數器:

Private Bytes顯示的當前字節數,這一進程已分配不了的與其他進程共享。

-1

如果您檢查精靈,轉儲或映射文件,您也可以在構建時間內對代碼/數據段進行一定程度的內存分析。 堆棧使用的GCC命令行選項爲:-fstack-usage和-fcallgraph-info。

+0

-1我很確定OP是要求在運行時分配的內存。 – quantum

相關問題