|
23.03.2011, 00:02
|
#1
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
std
такой вопрос:
при использовании конструкции вида
vector< int* > intList;
for( int num = 0; num < 10; num++ )
{
intList.push_back( new int( num * (rand() % 20)) );
};
...// some shit here
for( register unsigned int i = 0; i < intList.size(); i++ )
{
delete intList.at( i );
};
intList.clear();
не произойдет ли утечек памяти?
__________________
|
(Offline)
|
|
23.03.2011, 00:11
|
#2
|
Разработчик
Регистрация: 12.07.2008
Сообщений: 523
Написано 196 полезных сообщений (для 470 пользователей)
|
Ответ: std
Не должно. С чего вдруг?
>>vector
>>intList
>>vector
>>List
руки оторвать тем, кто путает векторы и списки...
>>register unsigned int
для тестового примера тоже излишне.
и ваще, почему бы не пользоваться итераторами?
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
23.03.2011, 00:17
|
#3
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: std
Итераторами я пользуюсь, и списки не путаю с динамическим массивом, это просто для примера. Вопрос был поставлен для перестраховки. Спасибо.
Причина по которой я решил пользоваться вектором с указателями на тип, потому-что, когда начинаешь запихивать в вектор что-то новое он вызывает конструктор копирования, а в некоторых случаях это не приемлимо
__________________
|
(Offline)
|
|
23.03.2011, 00:20
|
#4
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Ответ: std
как уже подметили, при обращении к елементам в любом контейнере следует обращятся через итераторы !! Это поможет избежать многих проблем !!
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
23.03.2011, 00:22
|
#5
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: std
Спасибо. Учту
__________________
|
(Offline)
|
|
23.03.2011, 00:48
|
#6
|
Дэвелопер
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений (для 1,460 пользователей)
|
Ответ: std
Сообщение от falcon
и ваще, почему бы не пользоваться итераторами?
|
Сообщение от IGR
как уже подметили, при обращении к елементам в любом контейнере следует обращятся через итераторы !! Это поможет избежать многих проблем !!
|
итераторы это и есть указатели.
Ваш Кэп.
Последний раз редактировалось ffinder, 23.03.2011 в 00:49.
Причина: копетан такой копетан
|
(Offline)
|
|
23.03.2011, 06:09
|
#7
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: std
чем это:
vector< int* > intList;
for( int num = 0; num < 10; num++ )
{
intList.push_back( new int( num * (rand() % 20)) );
};
...// some shit here
for( register unsigned int i = 0; i < intList.size(); i++ )
{
delete intList.at( i );
};
лучше этого:
vector< int > intList;
for( int num = 0; num < 10; num++ )
{
intList.push_back(num * (rand() % 20));
};
...// some shit here
for( register unsigned int i = 0; i < intList.size(); i++ )
{
intList.at( i )=0;
};
?
если же подразумевался new int[ num * (rand() % 20)], то нужен будет delete[]
и да - современным компиляторам начхать на register. хотя если тебе платят за байты кода...
|
(Offline)
|
|
23.03.2011, 10:51
|
#8
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: std
холи ты немного не понял мою мыслю. мне нужно вектор с указателями на тип а не просто вектор с типами.
__________________
|
(Offline)
|
|
23.03.2011, 17:25
|
#9
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: std
т.е инт тупо для примера? в алгоритме что то серьезнее? в любом случае, указатели лучше все же занулять после удаления. так, на всякий случай.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
23.03.2011, 18:14
|
#10
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: std
в алгоритме список пуль, ботов и прочего. инт для примера
__________________
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 07:51.
|