使用stringstream给我一个分段错误

时间:2013-11-16 20:27:39

标签: c++ segmentation-fault genetic-algorithm stringstream

我正在搞乱遗传算法,并决定为我的健身功能尝试一种新的格式。 (现在非常琐碎)。

void calcfitness()
    {
        stringstream toi;
        //Max fitness 72
        int attack = 0, defense = 0,
        speed = 0, energy = 0, disease = 0;

        toi << genes [0]; toi >> attack; toi.clear();
        toi << genes [1]; toi >> defense; toi.clear();
        toi << genes [2]; toi >> speed; toi.clear();
        toi << genes [3]; toi >> energy; toi.clear();
        toi << genes [4]; toi >> disease; toi.clear();


        fitness = (attack * 2) + (defense * 2) + speed + (energy * 3) - (disease * 5);
    }

dna存储为一个字符串,我正在尝试使用stringstream将其提取到单个基因中。

fitness = 

行不使用加权(* 3,* 2等),它工作正常(虽然它比我使用的慢)。当我加入加权时,我得到了一个分段错误。程序在发生之前甚至没有到达main()。 怎么可能这给我一个段错误呢?据我所知,我并没有尝试访问任何我不拥有的内存。 我四处搜寻,我发现的所有类似问题都是由于指针超出了范围,但据我所知,这也不是问题所在。

有没有更好的方法来设置它?我试着做了

attack = genes [0];

但是将char的ASCII代码分配给攻击,而不是值本身。

以下是它所属的类的开头:

class Being
{
int id, var1, var2, var3, var4;
string genes;

public:
double fitness;

  Being()
{
    id = env.getcurid();
    var1 = 0, var2 = 0, var3  = 0, var4 = 0;
    genes = gengenes(DNASIZE);
    fitness = 0;
}

非常感谢任何帮助。

谢谢。

0 个答案:

没有答案