在我想重新開辟動態陣列并寫入資料時,顯示寫入位置發生訪問沖突是怎么回事呢?
class Score
{
public:
void inscore(string n,int m ,int E,int P)
{
num = n; Math = m; English = E; Programming = P;
ascore=(m + E + P) / 3;
}
void showscore()
{
cout << "學號: "<<num << ' ' <<"數學成績: "<< Math << ' ' <<"英語成績: " <<English << ' ' << "程式設計成績: "<<Programming <<' '<<"平均成績: "<<ascore<< endl;
}
private :
string num;
int Math;
int English;
int Programming;
int ascore;
};
int main()
{
string Num;
int math;
int english;
int programming;
int i=0,length=3;
Score* p = new Score[length];
while(cin >> Num >> math >> english >> programming)
{
p[i].inscore(Num, math, english, programming);
i++;
if (i == length)
{
int m;
cout << "是否繼續輸入?是請輸入1,否請輸入0" << endl;
cin >> m;
if (m == 1)
{
Score* tem = new Score[length + 3];
for (int k = 0; k< length; k++)
{
tem[k] = p[k];
}
p = tem;
length = length + 3;
delete[]tem;
}
else break;
}
}
for (int j = 0; j < length; j++)
{
p[j].showscore();
}
delete[]p;
return 0;
}
uj5u.com熱心網友回復:
class Score
{
public:
void inscore(string n,int m ,int E,int P)
{
num = n; Math = m; English = E; Programming = P;
ascore=(m + E + P) / 3;
}
void showscore()
{
cout << "學號: "<<num << ' ' <<"數學成績: "<< Math << ' ' <<"英語成績: " <<English << ' ' << "程式設計成績: "<<Programming <<' '<<"平均成績: "<<ascore<< endl;
}
private :
string num;
int Math;
int English;
int Programming;
int ascore;
};
int main()
{
string Num;
int math;
int english;
int programming;
int i=0,length=3;
Score* p = new Score[length];
while(cin >> Num >> math >> english >> programming)
{
p[i].inscore(Num, math, english, programming);
i++;
if (i == length)
{
int m;
cout << "是否繼續輸入?是請輸入1,否請輸入0" << endl;
cin >> m;
if (m == 1)
{
Score* tem = new Score[length + 3];
for (int k = 0; k< length; k++)
{
tem[k] = p[k];
}
length = length + 3;
delete[]p;
p=tem;
}
else break;
}
}
for (int j = 0; j < length; j++)
{
p[j].showscore();
}
delete[]p;
return 0;
}
uj5u.com熱心網友回復:
好像缺拷貝建構式uj5u.com熱心網友回復:
第45~47行寫錯了,應該是回收原來 p 指向的記憶體,然后讓 p 指向新分配的多3個元素的記憶體45行:delete[]p;
46行:p = tem;
47行:length = length + 3;
uj5u.com熱心網友回復:
你越界了!!!!轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/267891.html
標籤:C++ 語言
上一篇:STL分層切片
