|
|
|
куда девается значение переменной
|
|||
|---|---|---|---|
|
#18+
Просьба помочь восполнить некоторые пробелы в базовых знаниях... Есть функция вида: Код: plaintext 1. 2. 3. 4. 5. Где-то мы ее вызываем Код: plaintext При этом в некоторых случаях (но не всегда) при использовании подобных конструкций до getData имеем нормальное значение pMyClassVar, а при выходе в pMyClassVar получаем 0. Исправляется так Код: plaintext 1. Но мне все же не понятно, почему возможно изменение переменной pMyClassVar в первом варианте? Что при этом происходит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2007, 10:39 |
|
||
|
куда девается значение переменной
|
|||
|---|---|---|---|
|
#18+
Передвай auto_ptr по ссылке и все будет нормально. Дело в том, что смартпоинтеры auto_ptr не разделяет объекты между собой. Если ты передашь auto_ptr в функцию по значению, то auto_ptr передаст свой объект в функцию, а сам (который внешний) освободится от него. Когда произойдет выход из функции, локальный auto_ptr будет удаляться и удалит объект который в себе хранит. Еще вариант - использовать интеллектуальные указатели, разделяющие объект. Например, boost::shared_ptr<class>. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2007, 10:51 |
|
||
|
куда девается значение переменной
|
|||
|---|---|---|---|
|
#18+
Во, точно! Из MSDN Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2007, 12:13 |
|
||
|
куда девается значение переменной
|
|||
|---|---|---|---|
|
#18+
askingВо, точно! Из MSDN Код: plaintext Можешь, конечно, один объект раздать разным auto_ptr, но так поступать не стоит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2007, 12:17 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34697323&tid=2028443]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
171ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 257ms |
| total: | 530ms |

| 0 / 0 |
