CArrayについて – プログラミング – Home

通知
すべてクリア

[解決済] CArrayについて


大三元
 大三元
(@大三元)
ゲスト
結合: 18年前
投稿: 54
Topic starter  

こんにちわ。
VC初心者です。
環境はVC6.0 WindowsXPです。

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


引用未解決
トピックタグ
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

デバッガで 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
 REE
(@REE)
ゲスト
結合: 23年前
投稿: 240
 

解放されるようです。


返信引用
大三元
 大三元
(@大三元)
ゲスト
結合: 18年前
投稿: 54
Topic starter  

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


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました