Re: [ROOT] compiler warning

From: cstrato (cstrato@aon.at)
Date: Mon Jun 07 2004 - 22:09:58 MEST


Dear Victor

Thank you, it seems the best way is to use new char.

Best regards
Christian

Victor Perevoztchikov wrote:

>>Is the following code allowed in other compilers:
>>    const Int_t kBufSize = 512; //in global space
>>    char option[kBufSize];  // in different functions
> 
> This is legal. But this array will disapeared after return or outside of
> scope.
> Anyway you can use new char[size]. But then somewhere you must delete it, to
> avoid memory leak;
> Victor
> 
> 
> Victor M. Perevoztchikov   perev@bnl.gov
> Brookhaven National Laboratory MS 510A PO Box 5000 Upton NY 11973-5000
> tel office : 631-344-7894; fax 631-344-4206;
> 
> ----- Original Message ----- 
> From: "cstrato" <cstrato@aon.at>
> To: "Victor Perevoztchikov" <perev@bnl.gov>
> Cc: <fine@bnl.gov>; "'Elias Athanasopoulos'" <elathan@phys.uoa.gr>;
> <roottalk@pcroot.cern.ch>
> Sent: Monday, June 07, 2004 3:02 PM
> Subject: Re: [ROOT] compiler warning
> 
> 
> 
>>Dear all
>>
>>Thank you all for giving me some more information.
>>
>>Sorrowly, Victor´s statement is really bad news.
>>Is the following code allowed in other compilers:
>>    const Int_t kBufSize = 512; //in global space
>>    char option[kBufSize];  // in different functions
>>
>>To reply to Valeri:
>>Suppose, I have the following code with the input:
>>    "options = "myopt1:myopt2"
>>
>>    MyFunction(const char *option)
>>    {
>>       Int_t csize = strlen(options) + 1;
>>       char *opt  = new char[csize];
>>       char *opt1 = new char[csize];
>>       char *opt2 = new char[csize];
>>
>>       opt = strtok(strcpy(opt, options),":");
>>       opt1 = strcpy(opt1, opt);
>>
>>       opt = strtok(NULL, ":");
>>       opt2 = strcpy(opt2, opt);
>>
>>       myClass->MyMethod(opt1, opt2)
>>       {
>>          fString1 = opt1;   //TString fString1;
>>          fString2 = opt2;   //TString fString2;
>>       }
>>
>>       delete [] opt2;
>>       delete [] opt1;
>>       delete [] opt;
>>    }
>>Is this code safe as long as I use TString and not char?
>>
>>BTW, this is the reason, why I always hated C which I
>>have never used, and why I try to use the TString class
>>whenever possible, :-)
>>
>>Best regards
>>Christian
>>
>>



This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:08 MET