单整数的分段错误

时间:2015-03-01 05:40:25

标签: c++ segmentation-fault int

所以我正在制作一个class这只是一种操纵array不同class的简单方法,并对其执行一些操作(如果你想知道分数) )

注意:这是我的作业,但我不认为这违反了任何规则,因为我不是在问如何做,而是问题是什么。但是,如果你有任何道德困境,我现在就告诉你。

该函数使用for循环遍历数组 - 但不是数组边界,因为我将代码更改为甚至不使用数组

for (int i = first - 1; i < last - 1; i++) cout << i;

i为4时我仍然会遇到段错误。 在函数调用的范围内,i不是变量。

此次通话的输出线为

0123
Segmentation fault

所以我知道,将i更改为4会导致错误。

班级中的会员数据是

private:
    int size;
    Fraction arr[20];

标题中的函数是

Fraction Product(int first, int last) const;

在错误之前使用它的代码就是这个(来自Bob Myers FSU CS Dept) http://www.cs.fsu.edu/~myers/cop3330/hw/hw4files/main.cpp

#include <iostream>
#include "flist.h"

using namespace std;

int main()
{
   int start;
   Fraction entry;
   FList a;
   cout << "Welcome!\n";
   cout << a;
   cout << "How many numbers to start with (1 - 20)? ";
   cin >> start;
   cout << "Please input the " << start << " starting fractions\n";
   for (int i = 0; i < start; i++)
   {
        cout << "Fraction #" << (i+1) << ":  ";
    entry.Input();
    a.Insert(entry);
   }
   cout << "\nHere's the list:\n" << a;

   cout << "Size of list = " << a.Size() << '\n';
   cout << "Sum of items in list = " << a.Sum();
   cout << "\nProduct of first 5 fractions in list = " << a.Product(1,5);

我不太了解计算机组织以及内存分配背后的真实情况但是我没有看到整数如何在不改变使用的字节数的情况下改变值然后变成无效的内存,所以我真的很感激有人可以说我接近这个错误的方式。

0 个答案:

没有答案