Re: [ROOT] zero pointers on NT

From: George A. Heintzelman (georgeh@aya.yale.edu)
Date: Fri Jan 26 2001 - 20:04:05 MET


Anton Fokin wrote:
> pointer (un)initialization was definitely my mistake. The problem is that my
> mistake causes different results on NT and Linux. On Linux the code below
> doesn't produce any error because if you call
> 
> A *p = new A();
> p->Draw();
> 
> 
> libNew zeroes fGraph. On Win98 and ROOT 3.02 it happens so that fGraph is
> not initialized wth zero.

Right. And if on Linux you did, inside some function:

A a;        // Define a local A object. Calls the default constructor.
a.Draw();

you are also likely (though not guaranteed) to see a segmentation 
violation, for the exact same reason, which is why libNew doesn't buy 
you any real safety.

George Heintzelman
georgeh@aya.yale.edu

> class A : public TObject {
> private:
>   TGraph *fGraph;
> public:
>   A();
>   void Draw(const char* Option);
> };
> 
> A::A()
> {
> }
> 
> void
> A:Draw(const char* Option)
> {
>   if (!fGraph)
>     fGraph = new TGraph();
> 
>   ...
> 
>   fGraph->Draw();
> }



This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:34 MET