2012-09-21 8 views
5

opencvで私のプロジェクトをcで書きます。 割り当てられたメモリまたは私のプログラムで使用されているメモリに関する印刷情報が必要です。 メモリに関する情報を提供する関数はありますか? 最後に、Qtを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にラッパーを書き込むことができます。

EDIT:mallocへの呼び出しと外部ライブラリでの呼び出しを傍受したい場合は、それらを共有ライブラリに定義してlibcの前にロードする必要があります。どのようにこれを行うかは、お使いのOSによって異なります。

あなたが your own process info pseudo-fileに見てLinuxの
+0

もしあなたがライブラリをロードし、アンラップされた 'malloc'を使うと、そのメモリはあなたのプログラムによって使われているのでしょうか? –

+0

あなたはmallocについてのラッパーとフリーの例を教えてください。 – Aym

+0

@RemusRusanu確かに絶対に可能です。 OSのメモリ予約機能を直接呼び出すことができます。 '' sbrk''のようなものです(ただし、malloc実装に干渉するため、推奨されません)。現代のmallocで使われている 'memmap'と、memの塊を分けています。 Win32上の 'VirtualAlloc'は、同じ概念です。または「NTHeap」のものも。 –

4

Windowsでは
/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) 

あなたがあなた自身のプロセスProcess Objectパフォーマンスカウンタを見て:

Private Bytesは、このプロセスはそれができない、割り当てられたことが現在のバイト数を表示します他のプロセスと共有することができます。

-1

あなたはエルフ、ダンプやマップファイルをチェックする場合にも、ビルド時にコード/データセグメントのメモリ分析のいくつかのレベルを行うことができます。 スタック使用のGCCコマンドラインオプションは、-fstack-usageと-fcallgraph-infoです。

+0

-1私はOPが実行時に割り当てられたメモリを要求していると確信しています。 – quantum

関連する問題