【发布时间】:2014-03-22 14:28:40
【问题描述】:
我的程序中有一些与内存相关的问题。我开始调试它。 我发现的是: 检查1后我有错误:浮动异常(核心哑巴) 对于 5 在 czynnikipierwsze,分段错误 10个号码 和 bad_alloc 取消注释代码的最后一部分。 任何想法可能是什么原因(使用向量 p = ....)
#include <iostream>
#include <cctype>
#include <vector>
using namespace std;
vector<int> CzynnikiPierwsze(int);
class NieprawidlowaDana //wyjatki
{};
class SpozaZakresu
{};
class RozkladLiczby{
private:
int *tab;
public:
RozkladLiczby(int); //konstruktor
vector<int> CzynnikiPierwsze(int); //metoda
~RozkladLiczby(); //destruktor
};
/////////////////BODY of the CLASS/////////////////////////////////////
RozkladLiczby::~RozkladLiczby() //destruktor
{}
RozkladLiczby::RozkladLiczby(int n){
int* tab = new int[n+1];
int i,j;
for( i=0;i<=n;i++)
tab[i]=0; //zerujemy tablice
for( i=2;i<=n;i+=2)
tab[i]=2; //zajmujemy sie liczbami parzystymi
for(i=3; i<=n;i+=2)
for(j=i;j<=n;j+=i) //sito erastotesa
if(tab[j]==0)
tab[j]=i;
for(int i=0;i<=10;i++)
cout<<tab[i]<<endl;
}
vector<int> RozkladLiczby::CzynnikiPierwsze(int m){
vector<int> tablica;
while(m!=1){
tablica.push_back(tab[m]);
m=m/tab[m];
}
delete [] tab;
return tablica;
}
//////////////////GLOWNY BLOK///////////////////////////////////////
int main(){
RozkladLiczby odp = RozkladLiczby(10);
cout<<"CHECK1"<<endl;
vector<int> p = odp.CzynnikiPierwsze(5);
//for(int i=0;i<=1;i++)
// cout<< p[i] <<endl;
return 0;
}
如果你能帮助我,我将不胜感激。
【问题讨论】:
标签: c++ exception segmentation-fault floating