0

更新: 受け入れられた解決策を確認してください。問題はクラス プロパティとは無関係でした。

私はMatlabで次の問題を抱えており、Googleやここでは何も見つかりません。次のようなハンドル クラスがあります。

classdef myClass < handle
  properties
    hugeCellArray
    otherVariables
  end
  ...
end

myObj = myClass(data); 試してみると、 Nowとしてインスタンス化しclear myObj.hugeCellArray ます。プロパティはまったくクリアされません。私が試しmyObj.hugecellArray = [];てみると、プロパティを [] に設定しますが、メモリはまだ割り当てられています! クラス全体をクリアしない限り、クラス内の巨大な変数を取り除くことはできないようですか? 前もって感謝します!

編集:(明確化)私の問題はメモリです。クラス プロパティを実際に削除するのではなく、そのメモリを解放したいのです。

4

3 に答える 3

4

オブジェクト全体をクリアせずに、オブジェクトのプロパティを「削除」することはできません。

あなたの懸念がメモリに関するものである場合、あなたが試したことは実際に割り当てられたメモリをクリアします:

myObj = myClass();
myObj.prop = rand(5000);
memory
myObj.prop = [];
memory
于 2013-06-26T13:05:39.663 に答える
1

アムロによる解決策:

どうやら問題はセル配列にあるようです。彼らは私の記憶を断片化し、後で再利用することはできません. 唯一の回避策は、セル配列を 1 つの巨大な配列に連結し、各サブ配列が最初に開始された場所のタブを保持しているようです。

于 2013-06-27T08:33:01.893 に答える