2

私は次のポインタを持っています:

BSTR *PREVIOUS;

そして、私は次の場所に新しいコピーを作成したいと思います。

BSTR *NEW;

CONTENTS / DATA(PREVIOUSが指している)をPREVIOUSからNEWにコピーしたい。

次のコマンドを試しましたが、機能しません。

memcpy(NEW,PREVIOUS,SysStringByteLen(*PREVIOUS));

ATL COM環境で作業しているため、コンパイル時にエラーは表示されません。助けてください。ありがとうございました!

4

1 に答える 1

5

BSTRはそれ自体が既にポインターであるため、ほとんどの場合、 (へのポインターである)BSTRではなく、単純な のみを使用する必要があります。通常、次のように a をコピーします。BSTR*BSTRBSTRSysAllocString

BSTR NEW = SysAllocString(PREVIOUS);

BSTR(関数の out パラメータなどを介して)へのポインターが実際にある場合は、間接レイヤーを追加します。

BSTR *PREVIOUS = ...;  // This must point to a valid BSTR
BSTR *NEW = ...;  // This must also point to a valid BSTR
*NEW = SysAllocString(*PREVIOUS);
于 2012-10-09T15:27:44.613 に答える