Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Буде ли такой код корректно работать ? / 9 сообщений из 9, страница 1 из 1
23.03.2014, 16:53
    #38593977
gera3323
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Буде ли такой код корректно работать ?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
template < typename _xT > class auto_ptr
{
	_xT *ptr;

	public:
		auto_ptr( _xT *ptr, size_t size )
		{
			ptr = new _xT[ size ];
			this->ptr = ptr;
		}

		~auto_ptr()
		{ 
			delete []this->ptr;
		}
};

void f()
{
		 int array[100];

		auto_ptr<int> memory( array, 100 );
}
...
Рейтинг: 0 / 0
23.03.2014, 18:18
    #38593992
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Буде ли такой код корректно работать ?
Будет, но совсем не так как ты ожидаешь (и, скорее всего, хочешь).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
23.03.2014, 18:19
    #38593993
gera3323
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Буде ли такой код корректно работать ?
Dimitry Sibiryakov,

мне всего нужно, что бы этот код освобождал память при выходе из функции
...
Рейтинг: 0 / 0
23.03.2014, 18:30
    #38593999
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Буде ли такой код корректно работать ?
gera3323мне всего нужно, что бы этот код освобождал память при выходе из функции

Он её освободит, конечно. Но, учитывая приватность ptr, он её может и не выделять вовсе,
поскольку обратиться к ней ты всё равно не сможешь.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
23.03.2014, 18:52
    #38594005
Вася Уткин
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Буде ли такой код корректно работать ?
gera3323
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
template < typename _xT > class auto_ptr
{
	_xT *ptr;

	public:
		auto_ptr( _xT *ptr, size_t size )
		{
			ptr = new _xT[ size ];
			this->ptr = ptr;
		}

		~auto_ptr()
		{ 
			delete []this->ptr;
		}
};

void f()
{
		 int array[100];

		auto_ptr<int> memory( array, 100 );
}


Вы должны копировать не указатель, а память по указателю - читайте "глубокое копирование".
А то у вас сразу 2 явные ошибки: и утечка памяти, и удаление статически выделенной памяти.

Вы вообще что, это хотели?
http://www.cplusplus.com/reference/memory/unique_ptr/operator%5B]/] http://www.cplusplus.com/reference/memory/unique_ptr/operator []/
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
// unique_ptr::operator[]
#include <iostream>
#include <memory>

int main () {
  std::unique_ptr<int[]> foo (new int[5]);

  for (int i=0; i<5; ++i) foo[i] = i;

  for (int i=0; i<5; ++i) std::cout << foo[i] << ' ';
  std::cout << '\n';

  return 0;
}
...
Рейтинг: 0 / 0
23.03.2014, 18:54
    #38594007
Вася Уткин
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Буде ли такой код корректно работать ?
Из-за скобок в ссылке не проходит, см эту:
http://www.cplusplus.com/reference/memory/unique_ptr/
И далее заходить в: operator[]
...
Рейтинг: 0 / 0
23.03.2014, 18:58
    #38594008
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Буде ли такой код корректно работать ?
Вася Уткину вас сразу 2 явные ошибки: и утечка памяти, и удаление статически
выделенной памяти.
С чего бы вдруг? Нет там ни того ни другого.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
23.03.2014, 19:00
    #38594009
BagaBaga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Буде ли такой код корректно работать ?
А чем не устраивают "штатные" unique_ptr или shared_ptr? А этот велосипед будет работать, но "странным образом".

Например, нафига выделять память в стеке
int array[100];
Чтобы затем выделить такой же кусок в куче
auto_ptr<int> memory( array, 100 );
а потом не иметь возможности к ней обратиться (из-за private)
...
Рейтинг: 0 / 0
23.03.2014, 19:21
    #38594015
Вася Уткин
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Буде ли такой код корректно работать ?
Dimitry SibiryakovВася Уткину вас сразу 2 явные ошибки: и утечка памяти, и удаление статически
выделенной памяти.
С чего бы вдруг? Нет там ни того ни другого.

А ну да, он извращенно одинаковые имена переменных использует :)
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Буде ли такой код корректно работать ? / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]