CArrayについて

[戻る]
大三元 2006/06/19(月) 13:22:31
こんにちわ。
VC初心者です。
環境はVC6.0  WindowsXPです。

CArrayで100個の要素があります。
RemoveAllという関数を実行すると、
全ての要素を削除しますが、
このときに100個の要素のために確保
されているメモリエリアは
開放されるのでしょうか?
また、その方法はありますか?

dairygoods 2006/06/19(月) 13:45:03
デバッガで RemoveAll() 内を追跡すると、

template<class TYPE, class ARG_TYPE>
void CArray<TYPE, ARG_TYPE>::SetSize(int nNewSize, int nGrowBy)
{
  ASSERT_VALID(this);
  ASSERT(nNewSize >= 0);

  if (nGrowBy != -1)
    m_nGrowBy = nGrowBy;  // set new size

  if (nNewSize == 0)
  {
    // shrink to nothing
    if (m_pData != NULL)
    {
      DestructElements<TYPE>(m_pData, m_nSize);
      delete[] (BYTE*)m_pData;
      m_pData = NULL;
...

となっており、メモリも削除されています。

REE 2006/06/19(月) 13:48:58
解放されるようです。

大三元 2006/06/19(月) 15:54:19
[[解決]]
ありがとうございます。
助かりました。

古いスレッドには追加発言できません。