Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Как сделать Control.Dispose() после Controls.Clear


Автор: unLIMIT1984 21.10.2009, 22:44
Привет.
Ребята, как это сделать на С#.NET знаю, а на C++.NET не знаю. Подскажите.

Код

private System.Windows.Forms.FlowLayoutPanel panel;
private void button1_Click(object sender, EventArgs e)
{
    int count = 1000;
    Control[] arr = new Control[count];
    for (int i = 0; i < count; i++)
    {
        RichTextBox rich = new System.Windows.Forms.RichTextBox();
        arr[i] = rich;
    }
    panel.Controls.AddRange(arr);
}
private void button2_Click(object sender, EventArgs e)
{
    int count = panel.Controls.Count;
    Control[] arr = new Control[count];
    for (int i = 0; i < count; i++)
        arr[i] = panel.Controls[i];
    panel.Controls.Clear();
    for (int j = 0; j < count; j++)
    {
        if (arr[j] != null)
            arr[j].Dispose(); //ЕДИНСТВЕННОЕ МЕСТО в программе, которое не знаю, как переписать на С++
    }
}


Понятно, что на C++, по сути "." заменятся на ->. Control[] заменится на array<Control^>^, а вот Dispose() для контролов нельзя вызывать в С++.
Подскажите, что делать?
После panel.Controls.Clear(), объекты все еще хранятся в памяти, как их удалить на С++?

Автор: zim22 22.10.2009, 08:35
Цитата(unLIMIT1984 @  21.10.2009,  22:44 Найти цитируемый пост)
объекты все еще хранятся в памяти, как их удалить на С++?

Код

delete [] arr;

Автор: xvr 22.10.2009, 15:05
Цитата(zim22 @ 22.10.2009,  08:35)
Цитата(unLIMIT1984 @  21.10.2009,  22:44 Найти цитируемый пост)
объекты все еще хранятся в памяти, как их удалить на С++?

Код

delete [] arr;

Вызывает сомнение применимость delete к ^ указателям  smile 
Просто присвой им NULL

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)