Re: Please give me a hint!
From what I read, it seems all the code above is inside a header file?
Non-inline function declarations should be in a separate .c or .cpp
file.
If you are still considering using the more C-ish approach with
pointers to the instead of using a vector, if you look closely at
setbin() you will realize you are not freeing the memory from previous
call before allocating more.
And, more information like the detailed error message would be great.
Best regards,
Victor Freire
On Apr 23, 9:51 am, mzdude <jsa...@cox.net> wrote:
On Apr 22, 10:51 pm, chuan <chuan...@googlemail.com> wrote:
I am trying to write a class for jackknife algorithm.
I need a dynamic array, which I call jack, inside the class.
Here is my code in jackknife.h
#include <iostream>
#include <vector>
#include <math.h>
class jackknife{
int bin;
double* jack;
double* data;
public:
jackknife();
~jackknife();
int setbin(int);
};
jackknife::jackknife() {
bin = 0;
}
jackknife::~jackknife(){
delete [] jack;
}
int jackknife::setbin(int n) {
bin = n;
jack = new double [n];
return bin;
}
I allocat memory in setbin, then debugger tells me
the program crashes in the deconstructor, when I free the memory.
I have little experience of C++, I realize the memory management must
be wrong.
But how to correct it.
class jackknife {
std::vector<double> jack;
std::vector<double> data;
size_t setbin( size_t newSize )
{
jack.resize(newSize);
return newSize;
}
};
Note that you no longer need to worry about constructors, destructors
or copy operators.- Hide quoted text -
- Show quoted text -