Further observations regarding alloca on i586-pc-linux-gnu

Oleg Zabluda zabluda@math.psu.edu
Wed Aug 26 12:26:00 GMT 1998


In article < 199808250624.IAA00271@mira.isdn.cs.tu-berlin.de > you wrote:
: > a) allocate heap memory inside the function. Disadvantage: needs
: >    explicite release.

: I'd say auto_ptrs are there for you, no? Somebody correct me, but it
: seems that

: void f(char * = std::auto_ptr<char*>(new char[20]));

: is valid C++, and gives you memory that will live slightly longer than
: the call to f, and will then be automatically deallocated.

This needs some modifications:

1. auto_ptr<>'s destructor deallocates the memory with
   operator delete, while you will need operator delete[].
   So you'll have to use your own auto_array<> or something,
   with the correct destructor.

2. My understanding is that the default arguments have static
   storage duration. This is not what was intended.

3. You can not initialize ``char*'' with std::auto_ptr<char*>.
   I think this is a typo. You meant something similar to
   void f( char* = std::auto_ptr<void*>(::operator new(20)).get() );

Oleg.



More information about the Gcc mailing list