• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MSHTMLにまつわる領域の確保、解放)

MSHTMLにまつわる領域の確保、解放

このQ&Aのポイント
  • C++BuilderXE2です。vc++2010でも同様と思います。
  • pDoc,pBody,strContent で使用する領域の確保、解放が問題ないのか疑問です。
  • pDocはDocument->QueryInterfaceで確保されているのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • kumatti1
  • ベストアンサー率60% (73/121)
回答No.1

pBody のRelease が呼ばれていない、strContent の解放(APIのSysFreeString)がされていない。 IHTMLDocument2 interface http://msdn.microsoft.com/en-us/library/aa752574(v=vs.85).aspx IHTMLElement interface http://msdn.microsoft.com/en-us/library/aa752279(v=vs.85).aspx

qhtsige
質問者

お礼

ご返事ありがとうございます。 pBody->Release();とするわけですね。 pBodyを格納するために確保された領域を開放せねばならないということは、 ・pBodyはpDocのHTML全体のBody部分ですが、pBodyが示す場所は、  pDocの一部を示すのでしょうか、 ・それとも、新たにBodyだけの領域を確保して、そこを示す のでしょうか。もし、前者ならば、pDocが解放されれば、自動的にその内部も解放されるので、Release(pBody)は不要ではないかと思うのですが。 それとも、IHTMLElement*pBody;で定義した、ポインタだけを解放するのでしょうか。 後者ならば、当然確保領域は解放せねばなりません。 それから、前者だとした場合、確保作業はget_innerHTML() プロパティ内で行う際、 領域のサイズは、データに応じて変化するのですね(当然でしょうが)。 これらの関係がモヤモヤしていますので、今一度教えて下さい。 msdnの資料もありがとうございました。

その他の回答 (1)

  • kumatti1
  • ベストアンサー率60% (73/121)
回答No.2

(どちらでもなく)COMオブジェクトなので、参照カウントの概念がありますね。 C++Builder にはテンプレートクラスが用意されていないのでしょうか。VC++だと、 #import <mshtml.tlb> などとすれば、_com_ptr_t でラップしてくれて、その辺りを意識しなくて済むのですが。 (BSTR も同様。_bstr_t がある)

qhtsige
質問者

お礼

COMオブジェクトの参照カウンタですか。なんとなく言葉は知っていますが、むつかしそうな概念です。素直にReleaseなどを呼んでおき、調べてみます。 ご教示ありがとうございました。

関連するQ&A