Answered step by step
Verified Expert Solution
Question
1 Approved Answer
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;
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
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started