获取"分段错误:在尝试将字符串写入setter时转储核心

0 c++ core

我有一个动态的对象数组,我调整了大小.调整大小后,我可以调用int和double对象的set方法,但不能调用任何带有字符串对象的setter.无论何时我尝试在调整大小的数组中为新索引调用setter,我都会获得核心转储.

这是生成错误的代码的主要部分.

void resizeAccounts(int newSize, Account *accounts, int acctNum, std::string fName,     :string lName, std::string acctP, double balance)
{       
Account* newArr = new Account[newSize];

for (int i=0; i<newSize-1; i++)
    newArr[i]=accounts[i];

delete [] accounts;
accounts = newArr;
accounts[newSize].setAccountNum(acctNum);
accounts[newSize].setFirstName(fName);
accounts[newSize].setLastName(lName);
accounts[newSize].setAccountPassword(acctP);
accounts[newSize].setBalance(balance);

for(int i=0; i<newSize; i++)
    std::cout << accounts[i].getAccountNum() << std::endl;
Run Code Online (Sandbox Code Playgroud)

我正在使用的二传手

void Account::setFirstName( std::string fName) 
{ firstName = fName; }
void Account::setLastName( std::string lName )
{ lastName = lName; }
void Account::setAccountPassword( std::string acctPass)
{ accountPassword = acctPass; }
void Account::setAccountNum( int acctNum)
{ accountNum = acctNum; }
void Account::setBalance( double bal)
{ balance = bal; }`
Run Code Online (Sandbox Code Playgroud)

这是家庭作业,我不允许使用矢量或大多数STL库.谢谢,

hmj*_*mjd 5

数组索引从此运行0N - 1:

accounts[newSize].setAccountNum(acctNum);
      //^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)

正在访问一个超过数组末尾的行为,导致未定义的行为.为有效指标accounts,因此是0newSize - 1.

由于std::vector不允许我就不提了.完全没有.