This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c++/37721] New: Segmentation fault


The following code gives segmentation fault:


#include <iostream>
#include <ctime>
#include <vector>
#include <list>
#include <cstddef>
#include <algorithm>


class SomeClass
{
    public:
    typedef std::vector<int> TypeVector;

    TypeVector vec;

    enum { VectorSize= 100 };

    public:

    SomeClass();
    SomeClass(const SomeClass &);

    bool operator<(const SomeClass &argSomeClass) const
    {
        return vec[0]< argSomeClass.vec[0];
    }
};





int main()
{
    using namespace std;

    srand(time(0));

    const size_t SIZE=1000;

    typedef vector<SomeClass> Vector;
    typedef list<SomeClass> List;


    cout<< "\nCreating vector with "<< SIZE<< " elements..."<< flush;
    Vector vec(SIZE);

    cout<<"   Done!\n\n"<< flush;

    List lis;


    cout<< "Filling list with vector elements..."<< flush;

    for(Vector::size_type i= 0; i< vec.size(); ++i)
        lis.push_back(vec[i]);

    cout<< "   Done!\n\n"<< flush;


    clock_t timeBeginVector, timeEndVector, timeBeginList, timeEndList;


    cout<< "Timing the sorting of the vector..."<< flush;


    // Diagnostic code line. Should output 1000 and 100 
    // cout<< endl<< vec.size()<< endl<< vec[0].vec.size()<< endl;

    timeBeginVector= clock();

    sort(vec.begin(), vec.end());

    timeEndVector= clock();

    cout<< "   Done!\n\n"<< flush;


    cout<< "Timing the sorting of the list..."<< flush;

    timeBeginList= clock();

    lis.sort();

    timeEndList= clock();


    cout<< "   Done!\n\n"<< flush;


    cout<< "The sorting of the vector took "
        <<  static_cast<double>((timeEndVector- timeBeginVector))/
CLOCKS_PER_SEC
        << " seconds\n\n";

    cout<< "The sorting of the list took "
        << static_cast<double>((timeEndList- timeBeginList))/ CLOCKS_PER_SEC
        << " seconds\n\n";
}



SomeClass::SomeClass():vec(VectorSize)
{
    using namespace std;

    for(TypeVector::size_type i= 0; i< vec.size(); ++i)
        vec[i]= rand();

    sort(vec.begin(), vec.end());
}


SomeClass::SomeClass(const SomeClass &):vec(VectorSize)
{
    using namespace std;

    for(TypeVector::size_type i= 0; i< vec.size(); ++i)
        vec[i]= rand();

    sort(vec.begin(), vec.end());
}


-- 
           Summary: Segmentation fault
           Product: gcc
           Version: 4.2.3
            Status: UNCONFIRMED
          Severity: blocker
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: ivranos at freemail dot gr
  GCC host triplet: Ubuntu 8.04 x86
GCC target triplet: Ubuntu 8.04 x86


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37721


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]