我知道当两个指针指向同一个动态分配的对象时,可能会发生"重复删除同一内存"错误。如果对其中一个指针应用
但是为什么这段代码不会导致运行时错误呢?
delete
,则该对象的内存将返回给自由存储区。如果随后删除第二个指针,则可能会破坏自由存储区。但是为什么这段代码不会导致运行时错误呢?
string *str_1 = new string;
auto str_2 = str_1;
*str_1 = "AAA";
cout<<*str_2<<endl;
delete str_1;
delete str_2; // No Error
// Prints AAA