mxGetPr
またはmxRealloc
によって返されたポインタが与えられても、引き続きその長さを取得できますか? MATLABはポインタのメモリを管理するので、クエリ用のメタデータを格納していますか?mxReallocまたはmxMallocから返されるポインタの長さを知ることはできますか?
答えて
あなたの質問は少し不明瞭なので、私は2つの機能を説明してみましょう:
mxGetPr
は、正確には(そのデータへのポインタをポインタを取得するために、既存のmxArray
数値配列で呼び出されますdouble
実データ)。このデータの長さを知りたい場合は、mxGetNumberOfElements
を使用して元の配列自体を照会することができます。mxRealloc
と関連する関数は、Cで利用可能な標準のmalloc
ファミリーファミリーに似ています。したがって、あなたがそれらを使用しているなら、あなたはメモリを割り当てているので、あなたはどのサイズですか?
mxRealloc
の目的は、MATLABがメモリをある程度自動的に管理できるようにすることです。 MEX関数が返ってくると、MATLABはmxMalloc
などで割り当てられた登録されたヒープメモリを解放します。
ここで良いコードを書くということは、あなた自身のメモリを解放すべきであることを意味します(この自動メモリ管理に頼ると処理が遅くなる可能性があります)が、特定のケースでは便利です終了時にリソースが解放されることを保証するために醜いgotoステートメントに依存する必要があります)。
内部について興味があれば、ほとんどのメモリアロケータはヒープ割り当て配列の長さを配列自体の直前に格納すると思います( 'ptr [-1]'のヘッダのように)。また、一部の実装のデバッグバージョンでは、バッファオーバーフローをキャッチするためのバインドチェックのために、ヘッダー/フッタースペースに余分なものを格納することがあります。 – Amro
- 1. MD5のパスワードの文字の長さを知ることはできますか?
- 2. 関数から返されたポインタを参照渡しすることはできません
- 3. コンソールアプリケーションはバッチファイルから呼び出されたことを知ることができますか?
- 4. バッチスクリプトは、PowerShellから呼び出されたかどうかを知ることができますか?
- 5. POSTリクエストから返されたデータをキャストまたは解析することはできません
- 6. 関数はどこから実行されているかを知ることができますか?
- 7. C++でCライブラリから返されたポインタを使用する
- 8. 修飾された修飾されたポインタを関数に渡すことはできますか?
- 9. 関数からのperlで+ {}または{}を返すこととの差が返され、refまたは値が返される
- 10. アプリがアプリストアから削除された後に通知を受け取ることはできますか?
- 11. テキストを指定された長さのチャンクに分割することはできますか?
- 12. JaVersはフィルタリングされたエントリの数を返すことができますか?
- 13. Ruby on Railsで電子メールのリンクがクリックされたことを知ることはできますか?
- 14. それはフォームが表示()またはShowModalで示されているかを知ることができる()
- 15. Get-Helpは、コマンドレットから返された型を通知しますか?
- 16. 長さを知らずにポインタを解放する
- 17. 間隔の長さを返す長さ関数をどのように書くことができますか?
- 18. Firebirdのテーブル名の長さを拡張することはできますか?
- 19. テーブルが変更データキャプチャ(CDC)から削除された、または追加されたことを知る方法?
- 20. TStringList.Sortはソートされたインデックスを返すことができますか?
- 21. IOS - UISaveVideoAtPathToSavedPhotosAlbumが保存されたビデオパスを返すことはできますか?
- 22. Marklogic:xqueryから返されるレコードの数を知るには?
- 23. アップロードされたファイルの種類がイメージかどうかを知ることはできますか?
- 24. 他のポインタから割り当てられたメモリを解放することはできますか?
- 25. アプリケーションでメソッドが呼び出されたかどうかを知ることはできますか?
- 26. Jinja2でリストを長さで並べ替えることはできますか?
- 27. 「もっとよく似た」クエリの選択された用語を知ることはできますか
- 28. 特定のファイルタイプが変更されたときにGerritに通知することはできますか?
- 29. Linuxプログラムは、どのように起動されたかを知ることができます:コマンドラインから?またはcronか他の何かによって?
- 30. これらの関数で異なるポインタとvoidポインタが使用されるのはなぜですか?
['mxGetNumberOfElements'](http://www.mathworks.com/help/matlab/apiref/mxgetnumberofelements.html)または[' mxGetDimensions'](http://www.mathworks.com/help)を使用できますか? /matlab/apiref/mxgetnumberofelements.html)? – Suever
ポインタの長さは 'sizeof(pointer_name)'の型と同じです。それともそれが指しているオブジェクトを意味していますか? – Olaf
私は彼が割り当てられたバイト数を意味すると思います。 – FredK