opencvで私のプロジェクトをcで書きます。 割り当てられたメモリまたは私のプログラムで使用されているメモリに関する印刷情報が必要です。 メモリに関する情報を提供する関数はありますか? 最後に、QtをLinuxとWindowsに使用しています。プログラムでメモリサイズを割り当てるにはどうすればよいですか?
ありがとうございます。
opencvで私のプロジェクトをcで書きます。 割り当てられたメモリまたは私のプログラムで使用されているメモリに関する印刷情報が必要です。 メモリに関する情報を提供する関数はありますか? 最後に、QtをLinuxとWindowsに使用しています。プログラムでメモリサイズを割り当てるにはどうすればよいですか?
ありがとうございます。
使用しているメモリの量を記録するmalloc
とfree
にラッパーを書き込むことができます。
EDIT:mallocへの呼び出しと外部ライブラリでの呼び出しを傍受したい場合は、それらを共有ライブラリに定義してlibcの前にロードする必要があります。どのようにこれを行うかは、お使いのOSによって異なります。
あなたが your own process info pseudo-fileに見てLinuxのもしあなたがライブラリをロードし、アンラップされた 'malloc'を使うと、そのメモリはあなたのプログラムによって使われているのでしょうか? –
あなたはmallocについてのラッパーとフリーの例を教えてください。 – Aym
@RemusRusanu確かに絶対に可能です。 OSのメモリ予約機能を直接呼び出すことができます。 '' sbrk''のようなものです(ただし、malloc実装に干渉するため、推奨されません)。現代のmallocで使われている 'memmap'と、memの塊を分けています。 Win32上の 'VirtualAlloc'は、同じ概念です。または「NTHeap」のものも。 –
:
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
は、このプロセスはそれができない、割り当てられたことが現在のバイト数を表示します他のプロセスと共有することができます。
あなたはエルフ、ダンプやマップファイルをチェックする場合にも、ビルド時にコード/データセグメントのメモリ分析のいくつかのレベルを行うことができます。 スタック使用のGCCコマンドラインオプションは、-fstack-usageと-fcallgraph-infoです。
-1私はOPが実行時に割り当てられたメモリを要求していると確信しています。 – quantum
この前のスレッドにはいくつかのアイデアがありますhttp://stackoverflow.com/questions/6192531/best-strategy-for-profiling-memory-usage-of-my-code-open-source-and-3rd-party – Ari