I have a std::vector<double>
In which GDB shows it containing these values:
Wph <5 items> vector<double>
[0] 10.750281685547618 double
[1] 0.0053087812248281997 double
[2] 4.2807534148705719e-08 double
[3] 5.7427427663508097e-07 double
[4] 0 double
Upon automatic destruction when the function is exiting, it throws a SIGABRT.
0 raise raise.c 64 0x7fffeec5ad05
1 abort abort.c 92 0x7fffeec5eab6
2 __libc_message libc_fatal.c 189 0x7fffeec93d7b
3 malloc_printerr malloc.c 6283 0x7fffeec9fa8f
4 _int_free malloc.c 4795 0x7fffeec9fa8f
5 __libc_free malloc.c 3738 0x7fffeeca38e3
6 __gnu_cxx::new_allocator<double>::deallocate new_allocator.h 95 0x457828
7 std::_Vector_base<double, std::allocator<double> >::_M_deallocate stl_vector.h 146 0x45567e
8 std::_Vector_base<double, std::allocator<double> >::~_Vector_base stl_vector.h 132 0x4542b3
9 std::vector<double, std::allocator<double> >::~vector stl_vector.h 314 0x453a96
What's going on?
int data = 0;
vector<double> Wph;
Wph.resize(mydata.data.size());
for (size_t t = 0; t < mydata.t.size(); t++)
{
double t0 = (PI / 180.0) * mydata.t[i];
for (size_t p = 0; p < mydata.p.size(); p++)
{
double _Wph = 5; //arbitrary math
Wph[data] = _Wph;
data++;
}
}
struct mydata
{
vector<double> t, p;
vector<point> data;
};
__libc_message
is trying to give you a message. What's it print out? – Moietydata
index doesn't overflow?valgrind
might help debugging bad memory access. – Bower