C++------------------>深浅拷贝的问题

主要是指针拷贝的时候析构会造成空析构。就是两次被析构,第一次析构后,第二次析构就找不到,就会导致报错!!!!!!!!!!!!!

 

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string>
#include<vector>
class Person {

public:
Person(const char* name, int age) {
this->m_Name = new char[strlen(name) + 1];
strcpy(this->m_Name,name);
this->m_Age = age;

}


Person(const Person& p) {
this->m_Name = new char[strlen(p.m_Name) + 1];
strcpy(this->m_Name, p.m_Name);
this->m_Age = p.m_Age;

}


Person& operator=(const Person& p) {
if (this->m_Name != NULL) {
delete[] this->m_Name;
}

this->m_Name = new char[strlen(p.m_Name) + 1];
strcpy(this->m_Name, p.m_Name);
this->m_Age = p.m_Age;
return *this;

}

 

~Person() {
if (this->m_Name != NULL) {

delete[] this->m_Name;
}

}
public:
char* m_Name;
int m_Age;
};

 

void test01() {

Person p("aaa", 20);
std::vector<Person> v_Person;
v_Person.push_back(p);

}

 

int main() {
//const char* name = "sswdegrgrg";;
//std::cout << "name " << int(name) << std::endl;
//std::cout << "len = " << strlen(name) << std::endl;
//char* pname = new char[strlen(name)];
//strcpy(pname, name);

test01();
system("pause");

 


}

posted @   水木清扬  阅读(95)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
历史上的今天:
2018-11-30 mnist lenet caffe 测试
点击右上角即可分享
微信分享提示