crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> оператор delete
Гость_Quest_*
сообщение 5.8.2015, 0:53
Сообщение #1





Гости








    


Здравствуйте уважаемые программисты. У меня есть два вопроса про оператор delete.
1.) Если мы удалим указатель, который ссылается на какой-то объект, то удалиться только этот указатель ? Или объект, на который ссылается указатель, тоже удалится??

2.) Почему в этом случае элемент вектора не удаляется ? Остается его адрес, и более того, ему присваивается какое-то значение ?
int main()
{

    int *x=new int(15);
    int *y=new int(11);
    int *z=new int(7);

    vector<int*> a;
    
    a.push_back(x);
    a.push_back(y);
    a.push_back(z);
    
    int *h=a.at(1);
    delete h;
    
    for(int i(0);i<a.size();i++)
    {
        cout<<a.at(i)<<endl;   // должно быть по-идеи два элемента, а их три.
    }    

    _getch();
    return 0;
}


Спасибо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Iron Bug
  опции профиля:
сообщение 5.8.2015, 17:33
Сообщение #2


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


По вектору лучше тоже перемещаться итератором:
for(vector<int*>::iterator i=a.begin();i!=a.end();i++)
    {
        delete *i;
    }



Цитата(lanz @ 5.8.2015, 16:17) *
Мне кажется одним C тут не отделаешься. Нужно понимать из чего состоит и как работает компьютер (хотя бы самый простой, например AVRка). Потом нужно понимать как разные языки доходят до "железа", как программы превращаются в исполняемые файлы и т.п.

AVRка всё же не компьютер. микроконтроллеры гораздо проще устроены. у современных компьютеров довольно сложные чипсеты, замороченные схемы прогрузки через UEFI и это начинающему вряд ли нужно понимать в деталях.
а вот цепочку превращения кода в бинарник понимать нужно в любом случае. ну и примерно о том, как код исполняется (тут тоже всё сильно зависит от архитектуры и там есть сильно разные реализации).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 18.4.2024, 8:12