由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - C++11 unique_ptr问题?
相关主题
c++ 是否也有class method??A try-catch problem in C++
C++一问a simple question for C++ class
请教 C++的一个困惑 (operator delete)关于C++中一个Class的大小 (转载)
what's the outcome?C++里面
对指针很熟的高手能否给菜鸟分步骤讲解一下这个单链翻转是怎么实现的?C++ 弱问一个
菜鸟请教smart pointerC++疑问
how to destruct list with loop?请教一个作用域的问题
谁能告诉为啥最后为啥输出两个Cc++ 得最基本问题
相关话题的讨论汇总
话题: ptr话题: string话题: unique话题: c++话题: delete
进入Programming版参与讨论
1 (共1页)
m*****n
发帖数: 2152
1
尽然发现unique_ptr可以和常规ptr share。
最后造成code crash,这算不算一个C++的问题?
int main()
{
unique_ptr up(new string("Nico"));
string *p = new string("Kid");
up.reset(p);
cout << *up << " " << *p << endl;
delete p;
return 0;
}
p***o
发帖数: 1252
2
不算,文档里都说take ownership了你还delete它干啥。

【在 m*****n 的大作中提到】
: 尽然发现unique_ptr可以和常规ptr share。
: 最后造成code crash,这算不算一个C++的问题?
: int main()
: {
: unique_ptr up(new string("Nico"));
: string *p = new string("Kid");
: up.reset(p);
: cout << *up << " " << *p << endl;
: delete p;
: return 0;

N******K
发帖数: 10202
3
裸指针并没有被禁止使用
用了智能指针 就不要再用delete 而且尽量不要用new 改为 make_new make_unique

【在 m*****n 的大作中提到】
: 尽然发现unique_ptr可以和常规ptr share。
: 最后造成code crash,这算不算一个C++的问题?
: int main()
: {
: unique_ptr up(new string("Nico"));
: string *p = new string("Kid");
: up.reset(p);
: cout << *up << " " << *p << endl;
: delete p;
: return 0;

m*****n
发帖数: 2152
4
为什么reset(ptr),不加个引用,然后把常规ptr赋值成NULL,等于做的和release()完
全相反,不是比较make sense吗?

【在 p***o 的大作中提到】
: 不算,文档里都说take ownership了你还delete它干啥。
d****i
发帖数: 4809
5
你这个不是多此一举吗?用
string s = "Kid";
char *ptr_s = s.c_str();
string *ptr_ss = &s;
不是挺好吗?

【在 m*****n 的大作中提到】
: 尽然发现unique_ptr可以和常规ptr share。
: 最后造成code crash,这算不算一个C++的问题?
: int main()
: {
: unique_ptr up(new string("Nico"));
: string *p = new string("Kid");
: up.reset(p);
: cout << *up << " " << *p << endl;
: delete p;
: return 0;

N******K
发帖数: 10202
6
你这还是原始社会思维

【在 m*****n 的大作中提到】
: 为什么reset(ptr),不加个引用,然后把常规ptr赋值成NULL,等于做的和release()完
: 全相反,不是比较make sense吗?

w*********l
发帖数: 1337
7
擦,明知人家要delete,你自己再delete一遍,然后说人家有问题

【在 m*****n 的大作中提到】
: 尽然发现unique_ptr可以和常规ptr share。
: 最后造成code crash,这算不算一个C++的问题?
: int main()
: {
: unique_ptr up(new string("Nico"));
: string *p = new string("Kid");
: up.reset(p);
: cout << *up << " " << *p << endl;
: delete p;
: return 0;

q****x
发帖数: 7404
8
他就是举例吧。

【在 d****i 的大作中提到】
: 你这个不是多此一举吗?用
: string s = "Kid";
: char *ptr_s = s.c_str();
: string *ptr_ss = &s;
: 不是挺好吗?

q****x
发帖数: 7404
9
+1

【在 p***o 的大作中提到】
: 不算,文档里都说take ownership了你还delete它干啥。
q****x
发帖数: 7404
10
reset的语义是reset unique_ptr,不是参数。那样会更复杂。
楼主的例子不好。这种情况下直接inline即可,没必要多一个参数。

【在 m*****n 的大作中提到】
: 为什么reset(ptr),不加个引用,然后把常规ptr赋值成NULL,等于做的和release()完
: 全相反,不是比较make sense吗?

1 (共1页)
进入Programming版参与讨论
相关主题
c++ 得最基本问题对指针很熟的高手能否给菜鸟分步骤讲解一下这个单链翻转是怎么实现的?
问个简单的memory allocation 的问题。菜鸟请教smart pointer
[合集] 关于C++ default copy constructorhow to destruct list with loop?
C++小程序查错谁能告诉为啥最后为啥输出两个C
c++ 是否也有class method??A try-catch problem in C++
C++一问a simple question for C++ class
请教 C++的一个困惑 (operator delete)关于C++中一个Class的大小 (转载)
what's the outcome?C++里面
相关话题的讨论汇总
话题: ptr话题: string话题: unique话题: c++话题: delete