Hi Marc,
Could you send me a simple working example that I can use
to reproduce your problem ?
Rene Brun
kamps wrote:
>
> Hello,
>
> I use ROOT version 2.25/03, using MSVC++ 6.0 under WinNT. The program below
> runs fine
> in principle. If I throw in a couple of events, with Tuple::Addevent, I can
> plot them
> from the n-tuple that is produced. If I add more and more files to the
> project, without
> changing main.cpp at all, none of the extra files using ROOT related code,
> the program will fail in Tuple::CloseTuple, in the line p_file->Write().
>
> The message I get is then:
> --------------------------------------------------------------------
> <CustomRealloc2>: passed oldsize 1032, should be 18415747
> Fatal in <CustomReAlloc2>: unreasonable size (18415747)
> aborting
> Warning in <TWinNTSystem::StackTrace>: this method must be overriden!
> --------------------------------------------------------------------
>
> I know that linking root into C++ programs sometimes involves subtleties
> that are
> not present in macros, so I probably have overlooked something simple. I
> want to use
> the buffering and compression facilities of n-tuples in my program, however.
> I hope you can tell from this information what goes wrong.
> Thanks,
> Marc
>
> --------------------- main.cpp -----------------------------------
> #include "D:/code/libs/neuronlib/tuple.h"
>
> int main()
> {
> Tuple tup;
> tup.OpenTuple("bla");
> tup.CloseTuple();
>
> return 0;
> }
> ------------------------ tuple.h -----------------------------------
> class Tuple {
> public:
>
> Tuple();
>
> bool OpenTuple(const char*p);
> void CloseTuple();
> void AddEvent( int, int, float);
> };
>
> ------------------------ tuple.cpp ---------------------------------------
> #include "tuple.h"
>
> #include <TRoot.h>
> #include <TNtuple.h>
> #include <TFile.h>
>
> TROOT root("root","tup");
>
> TFile* p_file;
> TNtuple* p_tuple;
>
> Tuple::Tuple()
> {
> }
>
> bool Tuple::OpenTuple(const char* p)
> {
> p_file = new TFile(p,"RECREATE","spike simulation run");
> p_tuple = new TNtuple("ntuple","events","in:out:time");
>
> return true;
> }
>
> void Tuple::CloseTuple()
> {
> p_file->Write();
> p_file->Close();
> delete p_file;
> }
>
> void Tuple::AddEvent( int i, int j, float f)
> {
> p_tuple->Fill((float)i,(float)j,f);
> }
>
> ----------------------------------------------------------------------------
> ----
This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:36 MET