This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Proposing switch -fsmart-pointers


Hi Guys

By proposing switch I think no c++ standard is threatened. We allready
have switch for unsigned char etc.

Looking at most of effort being pushed to STL and all kinds of
smart-pointer templates to produce more resilient code.
I think C/kernel developers deserve some love too.
I strongly belive That automatic cleanup should be provided also for
dynamic data on C/C++ low level language level.
Imagine specially declared ointers being freed when leaving scope.
So normal recovery in case of exception/error without memory leaks or
double deallocations are possible without error prone duplicate
copy-paste cleanup statements.
This will result to simpler and safer but not slower code.

First current state example

void proc() {
  Object* object_ptr;
  // zillion error/exception handlers zillion ways to messup cleanup
}

Let smart pointer declaration be for example
type *~ variable;

void proc() {
  Object*~ object_ptr;
  // zillion error/exception handlers but destructor/free is
automatically called when not null  and leaving scope just like with
static objects
}

Another important example

struct A {
  Object*~ object_ptr;
  Object*~ array[1000]; // during creation of array element [500]
exception happens yet resources are properly freed like with static
objects
}

// when stuct is destroyed all non null pointers have free called/
destructors where appropriate

Now those of you sayng that it is too complex to be done. I already
implemented it.
You can test it here.
http://www.codeproject.com/Articles/468126/new-local-for-safer-and-simpler-code-with-no-need

Unfortunately I have no idea how to do it in gcc. Is someone fluid
with gcc or it's plugins willing to hlep me ?
I would be more than thankfull.

I thing it would be best to implement it as compiller switch -fsmart-pointers
not requiring scope object and derive statement for objects. ie we
need equal flexibility and freedom like have today with static objects


What you guys think about this? I don't belive in stl solves all
especially in low level land.
Many heap spray exploits live only from improper cleanup from
complicated error handlers.
And there is really no need to have complicated and error prone code
anymore with this switch.

Regards
Ladislav Nevery [Unemployed]


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]