Answered step by step
Verified Expert Solution
Question
1 Approved Answer
Why am i getting AddressSanitizer: heap use after free error in function int Polynomial::getCoeff ( int power ) const. Attached is the code in C
Why am i getting AddressSanitizer: heap use after free error in function "int Polynomial::getCoeffint power const". Attached is the code in C #include "polynomial.h
#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;
void Polynomial::normalize
while degree && coefficientsdegree
degree;
int Polynomial::getDegree const
return degree;
int Polynomial::getCoeffint power const
if power && power degree
return coefficientspower;
else
return ;
Addition of polynomials
Polynomial Polynomial::operatorconst Polynomial& p const
if degree pdegree
return Polynomial;
int resultSize 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;
delete 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& other const
if degree other.degree
return false;
for int i ; i degree; i
if coefficientsi other.coefficientsi
return false;
return true;
Destructor
Polynomial::~Polynomial
delete coefficients;
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