This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/37721] New: Segmentation fault
- From: "ivranos at freemail dot gr" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 2 Oct 2008 19:15:40 -0000
- Subject: [Bug c++/37721] New: Segmentation fault
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
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