Получение munmap_chunk (): неверная ошибка указателя при использовании указателей и класса в функции - PullRequest
0 голосов
/ 09 апреля 2019

Я написал функцию, которая принимает введенную пользователем строку и ищет в массиве эту строку, а затем использует индекс этого массива для выполнения некоторых операций.Я получаю сообщение об ошибке и не могу понять, почему.Я пытался использовать отладчик, но постоянно получаю сообщение об ошибке, в котором говорится, что он не скомпилирован с символами отладки.Мой профессор буквально не помогает, и университет заставляет нас использовать Atom на виртуальной машине, когда я привык к CodeBlocks.

#include <iostream>
#include <iomanip>
#include <fstream>
#include "Shareholder.h"
#include "Share.h"

using namespace std;

int numberOfLines();
Share *loadData(int size);
void shareholderData(Shareholder &sh);
void displayData(Share *myShare, int num);
void purchaseShares(Share *myShare, Shareholder &sh, int num);
void displayShareholder(Shareholder &sh);
void balanceAdjust(Shareholder &sh);

int main(){

  int amount = numberOfLines();
  Share *shares = loadData(amount);
  displayData(shares, amount);
  Shareholder shareholder1;
  shareholderData(shareholder1);
  purchaseShares(shares, shareholder1, amount);
  delete shares;
  shares = 0;
  displayShareholder(shareholder1);
  balanceAdjust(shareholder1);

  exit(0);
}

//The fucntion i think is causing the issue

void purchaseShares(Share *myShare, Shareholder &sh, int num){

  bool valid = false;
  string comBought;
  int sharesBought;
  int match;
  double invested, balance;

  do{
    cout << endl;
    cout << setw(5) << "" << "Which company would you like to buy shares from? ";
    cin.ignore();
    getline(cin, comBought);
    cout << setw(5) << "" << "How many shares would you like to buy? ";
    cin >> sharesBought;
    cout << endl;

    for(int i = 0; i < num; i++){
    string target = myShare[i].getCompanyName();
    if(comBought == target){
        match = i;
        valid = true;
    }
    }
    if (valid == false){
    cout << setw(5) << "" << "Error! Invalid company! Please enter compnay from list.";
    }
  }while(valid == false);

  invested = myShare[match].getPricePerShare() * sharesBought;
  balance = sh.getAvailableBalance() - invested;

  sh.setAmmountInvested(invested);
  sh.setAvailableBalance(balance);
  sh.setNumberofShare(sharesBought);
  sh.setInvestmentCompany(myShare[match].getCompanyName());

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...