0

これは、Autodesk 社の AutoCAD 2013 (ObjectARX SDK) の公式ドキュメントからのものです。

ObjectARX for AutoCAD 2013: Readme -> Tips and Techniques -> Freeing *非定数ポインタとして返される文字列: *

const 以外の文字列ポインターを返すメソッド (たとえば、 ) を呼び出す場合AcDbSymbolTable::getName(char&* pName))は、返された文字列が占有しているメモリを解放する必要があります。次に例を示します。

// The getName() call should be followed by a call to
acutDelString(pLtName);pLtTableRcd->getName(pLtName);
// ... other code
acutDelString(pLtName);

一部の ObjectARX サンプル ファイルでは、メモリを解放するための呼び出しが欠落しているため、メモリ リークが発生することに注意してください。独自のコードでサンプルを使用する場合は、メモリを適切に解放してください。

次の引数の型の意味:

AcDbSymbolTable::getName(char&* pName))

へのポインタchar&ですか?どのような意味で?そのような構造はいつ使用されますか?

ありがとうございました。

4

2 に答える 2

6

時計回り/らせんの法則 によれば、pNameは a への参照へのポインタcharです。

参照へのポインタを持つことにはあまり意味がないと思います。ただし、関数内でポインターを変更できるため、逆の方法 (ポインターへの参照を持つ) は便利です。

于 2013-07-05T07:54:24.147 に答える
3

ドキュメントのタイプミスです。彼らが意味することはですAcDbSymbolTable::getName(char*& pName))

そのように読めば、段落の残りの部分は完全に理にかなっています。これは、stringへの参照として宣言された out-parameter を介してgetName文字列 ( ) を取得する関数です。char *さらに、返された「文字列」は を使用して解放する必要があるとさえ言いますacutDelString

ヘッダー ファイル内の実際の宣言を見ると、パラメーターが として宣言されている可能性が高いことがわかりますchar*&

于 2013-07-05T08:53:37.270 に答える