如果我有
Class *a1 = new Class();
Class *b1 = a1;
delete b1;
delete a1; //this will give a double free or corruption message;
Run Code Online (Sandbox Code Playgroud)
如果我删除指针b,它与删除指针一样正确吗?由于两者都指向同一个Class实例.那么,如何将a1的实例复制到b1,以便在删除b1时,不删除a1.
Class *a1 = new Class();
Class *b1 = a1;
//how do I duplicate the instance a1 is pointing
//so that when I delete b1, a1 still exists.
delete b1;
delete a1; //this is still valid
Run Code Online (Sandbox Code Playgroud)
谢谢.
Kar*_*k T 11
您是否有使用指针和分配的原因?还有它的简单
Class a1;
...
Class b1 = a1;
Run Code Online (Sandbox Code Playgroud)
这里没有必要删除.
如果您需要保持结构,您需要这样做
Class *a1 = new Class();
Class *b1 = new Class(*a1);
Run Code Online (Sandbox Code Playgroud)
要么
Class *a1 = new Class();
Class *b1 = new Class();
*b1 = *a1;
Run Code Online (Sandbox Code Playgroud)
假设您有一个有效的拷贝构造函数(例如#1)或赋值运算符(例如#2)
ps:尝试使用std::unique_ptr而不是原始指针更安全.
| 归档时间: |
|
| 查看次数: |
14194 次 |
| 最近记录: |