![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Alek86 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
даже чистый вирт интерфейс не может работать с переменными типов std::auto_ptr и т.п. |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
||||
|
||||
nirburg |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 20.3.2008 Репутация: 1 Всего: 1 |
как-нибудь эдак, конечно, можно. вопрос - нужно ли? ![]() (шепотом) там народ уже интерфейсы обсуждает )) скоро, чувствую, все сведется к необходимости создания дерева классов со сложной иерархией, наследованием, и прочей модной шелухой =) |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
тем более вопрос был не об auto_ptr , а о том как избежать проблем с выделением памяти внутри функции
Добавлено через 1 минуту и 11 секунд )) |
|||
|
||||
ama_kid |
|
|||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 2 Всего: 95 |
Удалить-то мы его удалим, а куда денется выделенная по-новой память при выходе из функции?
-------------------- самурай без меча подобен самураю с мечом, но только без меча |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
если изменять память внутри функции надо передаватж в нее ссылку на указатель.. тогда ее можно будет удалить извне .. но в таком случае саму функцию желательно называть типа newString - чтобы было ясно что внутри происходит выделение памяти .. а так же желательно чтоб был ее антоним типа deleteString - но такой подход только в особенных случаях в остальных как и говорилось выше - нужно выделять памятж вне функции |
|||
|
||||
ama_kid |
|
|||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 2 Всего: 95 |
Опять же - а если вне функции неизвестен размер требуемой памяти?
Хорошо, у меня вроде бы сформировался более-менее основной вопрос, попробую его сформулировать: как после выполнения оператора
1) размер строки становится известен только внутри GetString()... 2) пользуясь new\delete? P.S. Для случаев с malloc\realloc\free я более-менее уже понимаю... -------------------- самурай без меча подобен самураю с мечом, но только без меча |
|||
|
||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
присваивать так низя, юзай strcpy
|
|||
|
||||
ama_kid |
|
|||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 2 Всего: 95 |
что передавать в strcpy?
Ну это гипотетический пример, хоть strcpy, хоть что-то другое , без разницы, главное - на выходе получить валидный буфер Это сообщение отредактировал(а) ama_kid - 6.6.2008, 13:08 -------------------- самурай без меча подобен самураю с мечом, но только без меча |
|||
|
||||
Fazil6 |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
Добавлено через 1 минуту и 8 секунд кстати
|
||||
|
|||||
ama_kid |
|
|||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 2 Всего: 95 |
Fazil6, ага, вариант понятен... В принципе, я так и делал всегда...
Кстати, щас только сообразил, что непроходимо туплю - сам же на свой вопрос вывесил в топике ответ - ссылка ответа от RAN. В связи с этим вопрос - насколько корректен приведённый там пример? Просто никто там после этого не отписался по поводу правильности\неправильности. Если он правилен - тогда вопрос снимается... -------------------- самурай без меча подобен самураю с мечом, но только без меча |
|||
|
||||
JackYF |
|
||||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Ого, сколько написали...
Подытожу по себе (то есть, как бы это делал я). Варианта 2: 1) целевой язык - С
2) целевой язык - С++
В первом случае ты сам заботишься о том, чтобы освободить выделенную внутри функции память, во втором случае за тебя всё уже сделано. Это сообщение отредактировал(а) JackYF - 6.6.2008, 13:26 |
||||
|
|||||
ama_kid |
|
|||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 2 Всего: 95 |
-------------------- самурай без меча подобен самураю с мечом, но только без меча |
|||
|
||||
nirburg |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 20.3.2008 Репутация: 1 Всего: 1 |
JackYF, в C нет new и delete
![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |