[問題] 除錯 使用到相同記憶體位置的Code
int main()
{
Employee programmer("John",22);
cout << programmer.getName() << endl;
//Lots of code ....
Employee manager = programmer;
//Creates a new Employee "manager",
//which is an exact copy of the
//Employee "programmer".
return 0;
}
請問這段Code執行後會發生Exception
是不是Programmer 跟 Manager是相同的記憶體位置
之後其中一個物件執行完就釋放掉(Programmer先執行完)
之後Manager也被釋放掉 所以在呼叫時也就錯誤了
請問我這樣觀念正確嗎?
還是其實有誤解的地方
麻煩指正了
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.156.3
→
10/17 22:02, , 1F
10/17 22:02, 1F
→
10/17 22:04, , 2F
10/17 22:04, 2F
→
10/17 23:06, , 3F
10/17 23:06, 3F
→
10/17 23:07, , 4F
10/17 23:07, 4F
→
10/17 23:07, , 5F
10/17 23:07, 5F
→
10/17 23:08, , 6F
10/17 23:08, 6F
→
10/17 23:59, , 7F
10/17 23:59, 7F
→
10/17 23:59, , 8F
10/17 23:59, 8F
→
10/18 00:00, , 9F
10/18 00:00, 9F
→
10/18 00:01, , 10F
10/18 00:01, 10F
SORRY 完整code如下:
#include <iostream>
using namespace std;
class Employee {
public:
Employee(char *name, int id);
~Employee();
char *getName(){return _name;}
//Other Accessor methods
private:
int _id;
char *_name;
};
Employee::Employee(char *name, int id)
{_id = id;
_name = new char[strlen(name) + 1];
//Allocates an character array object
strcpy(_name, name);
}
Employee::~Employee()
{
delete[] _name;
}
int main()
{
Employee
programmer("John",22);
cout << programmer.getName() << endl;
return 0;
}
※ 編輯: pugboy 來自: 140.115.156.3 (10/18 09:36)
推
10/18 09:46, , 11F
10/18 09:46, 11F
→
10/18 09:47, , 12F
10/18 09:47, 12F
→
10/18 09:47, , 13F
10/18 09:47, 13F
→
10/18 09:47, , 14F
10/18 09:47, 14F
→
10/18 09:48, , 15F
10/18 09:48, 15F
→
10/18 09:48, , 16F
10/18 09:48, 16F
→
10/18 09:56, , 17F
10/18 09:56, 17F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章