Question: why am i getting std error and AddressSanitizer: heap - use - after - free error? #include polynomial.h #include #include #include #include #include using
why am i getting std error and AddressSanitizer: heapuseafterfree error? #include "polynomial.h
#include
#include
#include
#include
#include
using namespace std;
Polynomial::Polynomial
: degree coefficientsnullptr
Polynomial::Polynomial int b int a
: degree coefficientsnew int
coefficients b;
coefficients a;
normalize;
Constructor for a single term polynomial
Polynomial::PolynomialTerm term
: degreetermpower coefficientsnew inttermpower
for int i ; i degree; i
coefficientsi;
coefficientstermpower term.coefficient;
normalize;
Constructor for a polynomial with given coefficients
Polynomial::Polynomialint nCoeff, int coeff
: degreenCoeff coefficientsnew intnCoeff
for int i ; i degree; i
coefficientsi coeffi;
normalize;
int Polynomial::getCoeffint power const
if power && power degree
return coefficientspower;
else
return ;
Destructor
Polynomial::~Polynomial
delete coefficients;
int Polynomial::getDegree const
return degree;
void Polynomial::normalize
while degree && coefficientsdegree
degree;
Addition of polynomials
Polynomial Polynomial::operatorconst Polynomial& p const
if degree pdegree
return Polynomial;
int resultSize std::maxdegree pdegree ;
int resultCoefficients new intresultSize;
int k ;
while k degree && k pdegree
resultCoefficientsk coefficientsk pcoefficientsk;
k;
for int i k; i degree; i
resultCoefficientsi coefficientsi;
for int i k; i pdegree; i
resultCoefficientsi pcoefficientsi;
Polynomial resultresultSize resultCoefficients;
return result;
Scalar multiplication
Polynomial Polynomial::operatorint scale const
if degree
return Polynomial;
Polynomial resultthis;
for int i ; i degree; i
result.coefficientsi scale coefficientsi;
result.normalize;
return result;
Multiplication by a single term
Polynomial Polynomial::operatorTerm term const
if degree
return Polynomial;
int results new intdegree term.power;
for int i ; i term.power; i
resultsi;
for int i ; i degree; i
resultsi term.power coefficientsi term.coefficient;
Polynomial resultdegree term.power, results;
delete results;
return result;
Scalar assignment
void Polynomial::operatorint scale
if degree
return;
for int i ; i degree; i
coefficientsi scale coefficientsi;
normalize;
Polynomial division
Polynomial Polynomial::operatorconst Polynomial& denominator const
if degree denominator.degree
return Polynomial;
if this Polynomial
return this;
if denominatorgetDegree getDegree
return Polynomial;
int resultSize degree denominator.degree ;
int results new intresultSize;
Polynomial remainderthis;
for int i resultSize ; i ; i
int remainderstCoeff remainder.getCoeffi denominator.getDegree;
int denominatorstCoeff denominator.getCoeffdenominatorgetDegree;
if remainderstCoeff denominatorstCoeff
resultsi remainderstCoeff denominatorstCoeff;
Polynomial subtractor denominator Termresultsi i;
remainder remainder subtractor;
else
delete results;
return Polynomial;
if remainder Polynomial
Polynomial resultresultSize results;
delete results;
return result;
else
delete results;
return Polynomial;
Equality check
bool Polynomial::operatorconst Polynomial& p const
using namespace std::relops;
if degree pdegree
return false;
for int i ; i degree; i
if coefficientsi pcoefficientsi
return false;
return true;
Step by Step Solution
There are 3 Steps involved in it
1 Expert Approved Answer
Step: 1 Unlock
Question Has Been Solved by an Expert!
Get step-by-step solutions from verified subject matter experts
Step: 2 Unlock
Step: 3 Unlock
