2

自分で解決できなかったので、この質問をしています。誰かが私に何か提案をしてくれることを願っています。

私の問題は次のとおりです。

私のプログラムには3つの部分が含まれています:

part-1: video encoder, 
part-2: channel coding - also call to a mex-files: complie from C-function "encodeBits.c" to Matlab-mexfile "encodeBits.mexw32", 
part-3: video decoder.

また、4 つのチェックを実行します。

チェック 1: part-1 + part-2全体。これは、チャネルコーディングがなくても、プログラムがうまく機能することを意味します。

チェック 2: パート 2 への疑似入力。これは、パート 2 が単独であることを意味します。パート2はうまくいきます。

part-2 still works well even under this condition:
                possible array:             **632** MB (6.623e+08 bytes) *
                Memory available for all arrays:   **1054** MB (1.105e+09 bytes) **
                Memory used by MATLAB:              653 MB (6.842e+08 bytes)
                Physical Memory (RAM):             2795 MB (2.930e+09 bytes)

チェック 3:パート 1 + パート 2 + パート 3全体。

    memory before part 1 runs:
        Maximum possible array:             877 MB (9.199e+08 bytes) *
        Memory available for all arrays:   1265 MB (1.326e+09 bytes) **
        Memory used by MATLAB:              441 MB (4.628e+08 bytes)
        Physical Memory (RAM):             2795 MB (2.930e+09 bytes)
    memory before part-2 runs, means after part-1 finished:
        Maximum possible array:             **869** MB (9.107e+08 bytes) *
        Memory available for all arrays:   **1270** MB (1.332e+09 bytes) **
        Memory used by MATLAB:              430 MB (4.511e+08 bytes)
        Physical Memory (RAM):             2795 MB (2.930e+09 bytes)
    and it results error right after part-2 starting with error
        Error using encodeBits
        Out of memory. Type HELP MEMORY for your options.

チェック 4: チェック 3 からすべての変数をクリアした後、パート 2 を単独で再試行しましたが、それでもエラーが発生します

        Error using encodeBits
        Out of memory. Type HELP MEMORY for your options.

チェック 5: Matlab ウィンドウを閉じ、Matlab ウィンドウを開き、part-2 を単独 で実行するとうまくいきます。

それで、なぜそれが起こるのか理解できず、懸命に検索しようとしましたが、それでも解決できません。

4

1 に答える 1

0

mex 呼び出し時または呼び出し後に負荷がかかっているチェックが失敗し、clear all を使用しても修正されないことから判断すると、mex コードでメモリ リークが発生しているようです。mexFunction がメモリを割り当ててクリアしない場合、matlab はスペースをクリアできないため、matlab を終了するまで割り当てられたままになります。

于 2013-03-27T21:48:06.343 に答える