Вот никогда не думал что понадобиться отцепить память от умного указателя.
Но как оказалось такой возможности даже и нет.
это ведь можно было трактовать как освобождение умного указателя т.е. уменьшить счётчик и отдать указатель.
т.е. Я понимаю что shared_ptr потокобезопасный, и всё такое, но было бы удобно если б такая возможность всё же была, тем более программист делает это явно, занчит знает что стреляет в ногу.
Здравствуйте, nen777w, Вы писали:
N>Вот никогда не думал что понадобиться отцепить память от умного указателя. N>Но как оказалось такой возможности даже и нет.
N>это ведь можно было трактовать как освобождение умного указателя т.е. уменьшить счётчик и отдать указатель. N>т.е. Я понимаю что shared_ptr потокобезопасный, и всё такое, но было бы удобно если б такая возможность всё же была, тем более программист делает это явно, занчит знает что стреляет в ногу.\
Возможность есть. Называется release. Но работает только, если use_count == 1. объяснения здесь http://www.boost.org/doc/libs/1_47_0/libs/smart_ptr/shared_ptr.htm (если use_count > 1, то выстрел в ногу гарантирован. Зачем его тогда делать?)
Здравствуйте, nen777w, Вы писали:
N>Вот никогда не думал что понадобиться отцепить память от умного указателя. N>Но как оказалось такой возможности даже и нет.
Метод reset тебе поможет.
Если умеешь защищать программы, то умеешь их и ломать, но не наоборот.
Документация как секс — лучше любая, чем никакой.
Здравствуйте, usc.urich, Вы писали:
UU>Здравствуйте, nen777w, Вы писали:
N>>Вот никогда не думал что понадобиться отцепить память от умного указателя. N>>Но как оказалось такой возможности даже и нет.
UU>Метод reset тебе поможет.
Метод reset мне никак не поможет.
Здравствуйте, nen777w, Вы писали:
N>Вот никогда не думал что понадобиться отцепить память от умного указателя. N>Но как оказалось такой возможности даже и нет.
N>это ведь можно было трактовать как освобождение умного указателя т.е. уменьшить счётчик и отдать указатель. N>т.е. Я понимаю что shared_ptr потокобезопасный, и всё такое, но было бы удобно если б такая возможность всё же была, тем более программист делает это явно, занчит знает что стреляет в ногу.
Возможность-то есть, нужно написать свой deleter.
Пример ниже: