This is the mail archive of the gcc-patches@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]

Re: [C++ patch] Set attributes for C++ runtime library calls


On 08/26/2013 10:45 AM, Gabriel Dos Reis wrote:
Hmm, let's not make it a default.  Replacing global operator new (e.g. for
tracing purposes) is a valid C++ programming idiom.

Absolutely. What strikes me as vanishingly unlikely is the idea that the replacement operator new would expose pointers to returned memory *and* that code would refer to the memory both via one of those pointers and via the value of the new-expression in the same function. That is,

void *last_new_ptr;
void *operator new (size_t) noexcept(false) {
  last_new_ptr = ...;
  return last_new_ptr;
}

int main()
{
  int *a = new int;
  int *b = (int*)last_new_ptr;
  *a = 42;
  *b = 24;
  if (*a != 24) abort();
}

I'm happy to let this code break by assuming that the store to b couldn't have affected *a.

Jason


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