多项式类在调试器中运行良好,但在尝试构建和运行时则不然
Polynomial Class runs fine in debugger but not when trying to build&run
所以我已经尝试解决这个问题好几个小时了,但没有成功。我有一个多项式方法的类(设置/获取等级,设置/获取多项式系数,打印多项式,为给定的一组数字找到每个y=f(x)等等)
然而,问题是,每当多项式的等级是偶数时,构建&run返回奇怪的值。它的调试运行得非常好。另一方面,每当级别不均匀时,无论是调试还是构建都可以完美地工作;跑我认为问题出在通常分配的内存上。这是代码。感谢
main.cpp
#include "poly_header.h"
int main()
{
Poly p;
p.AfisareValori();
return 0;
}
poly_header.h
#include <iostream>
#include <math.h>
using namespace std;
class Poly
{
private:
int grad;
int* coeficienti;
int a;
int b;
int dx;
public:
Poly();
void SetGrad();
int GetGrad();
void SetCoef();
void GetCoef();
void SetPolyn();
void PrintPoly();
void SetInterval();
void SetDistanta();
void AfisareValori();
~Poly();
};
poly_functions.pp
#include "poly_header.h"
Poly::Poly()
{
this->grad = 0;
this->coeficienti = new int[0];
}
Poly::~Poly()
{
delete coeficienti;
}
void Poly::SetGrad()
{
int n;
cout<<"Introduceti gradul dorit al polinomului: ";
cin>>n;
this->grad = n;
}
int Poly::GetGrad()
{
cout<<"n";
return this->grad;
}
void Poly::SetCoef()
{
int n;
this->coeficienti = new int[this->grad];
for(int i = 0; i <= this->grad; i++){
cout<<"Introduceti coeficientul "<<i<<" :";
cin>>this->coeficienti[i];
cout<<"n";
}
}
void Poly::GetCoef()
{
cout<<"n";
for(int i = 0; i <= this->grad; i++)
cout<<"Coeficientul asociat termenului x^"<<i<<" este:"<<this->coeficienti[i]<<"n";
}
void Poly::SetPolyn()
{
SetGrad();
SetCoef();
}
void Poly::PrintPoly()
{
SetPolyn();
for(int i = grad; i >= 0; i--){
if(i == 0){
cout<<coeficienti[i];
break;
}
cout<<coeficienti[i]<<"*X^"<<i<<" + ";
}
}
void Poly::SetInterval()
{
int a,b;
cout<<"Introduceti capatul din stanga al intervalului: ";
cin>>a;
this->a = a;
cout<<"n";
cout<<"Introduceti capatul din dreapta al intervalului: ";
cin>>b;
this->b = b;
cout<<"n";
}
void Poly::SetDistanta()
{
int dx;
cout<<"Introduceti distanta dintre puncte: ";
cin>>dx;
this->dx = dx;
cout<<"n";
}
void Poly::AfisareValori()
{
SetPolyn();
SetInterval();
SetDistanta();
int suma;
for(int i = a; i <= b; i+=dx){
suma = 0;
for(int j = 0; j <= grad; j++){
suma += coeficienti[j] * (pow (i,j));
}
cout<<"Valorea polinomului in punctul "<<i<<" este "<<suma<<"n";
}
}
次多项式p(用你的话来说是"rad")N有N+1个系数;
在伪代码中:
length((N, N-1, ... 1, 0)) = N + 1.
因此这个
void Poly::SetCoef() { /*...*/ this->coeficienti = new int[this->grad]; /*...*/ )
少分配一个int。
偶数次多项式有奇数N个系数,奇数次多项式有偶数个系数。
如果你分配的int
太少,奇数次多项式的桶太少,位于2*sizeof(int)内存对齐的边界;因此,该铲斗很可能没有以其他方式使用。
这甚至不能持续几度,他们丢失的铲斗在一个新的对齐块内。
这也是调试和发布模拟之间差异的解释;调试编译器运行只是将内存压缩得不如发布编译器密集。
除此之外,您根本不必为了您的目的而处理手动字段分配;例如CCD_ 2和CCD_。
相关文章:
- 使用纯 CMake 构建 SFML 时出现运行时错误
- 在 Visual Studio 中构建一个没有 C/C++ 运行时的静态库
- CMake:尝试在 Jenkins 构建机器上运行时出现"Linked Library"错误 (0xc0000135)
- 有关为指向运行时确定的多个结构之一的指针构建类的建议
- 是否可以在运行时在C++中构建变量名称?
- C++运行时构建嵌套函数
- 访问使用 Bazel 构建的应用程序中的运行时文件
- Windows7+:如何构建不需要任何额外/外部运行时库的C++ Windows 控制台应用程序?
- 是否有任何可能的方法将事件(自定义)附加到在运行时创建的对象?[C 构建器]
- 如何在运行时构建DLL
- 使用静态 c 运行时库构建 libxml2
- 构建计算机上的C++运行时版本与客户计算机
- 尝试为安卓示例构建 OpenCV 时运行构建器"CDT 生成器"时出错
- 仅使用 DLL *.h 头文件构建(compile.link)应用程序代码,并在运行时加载 DLL 实现(显式链接)
- 在运行 ubuntu 的服务器中构建 FastCGI 时出错
- 构建运行良好,但在运行时崩溃
- 运行VS2008解决方案时运行时错误;解决方案正在构建良好
- clang与gcc运行时的区别:用clang构建的c++类模板在没有复制构造函数的情况下崩溃,用复制构造函数构建的gcc
- 我可以使用针对2008 VS运行时的构建与VS 2010,而没有VS 2008的副本吗
- Boost库构建-运行时链接和链接选项之间的差异