【C++基础】深拷贝与浅拷贝的陷阱:从内存视角看拷贝控制

引言:一个价值百万的Bug

2007年,某著名游戏公司因内存泄漏导致服务器崩溃,损失数百万美元。最终定位到一段浅拷贝代码:

class Player {
public:
    Player(const char* name) {
        name_ = new char[strlen(name)+1];
        strcpy(name_, name);
    }
    ~Player() { delete[] name_; }
private:
    char* name_;
};

void createTeam() {
    Player p1("Alice");
    Player p2 = p1; // 浅拷贝!
} // p2析构后,p1.name_ 成为悬垂指针!

这个Bug揭示了深拷贝与浅拷贝的根本区别。本文将深入剖析这一面试必考知识点。

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

byte轻骑兵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值