char *p = new char[200]; char *p1 = p; char *p2 = &p[100]; delete [] p1;
Кстати, это не тест или что-то еще, что мне действительно нужно знать:)
// allocate memory for 200 chars // p points to the begining of that // block char *p = new char[200]; // we don't know if allocation succeeded or not // no null-check or exception handling // **Update:** Mark. Or you use std::no_throw or set_new_handler. // what happens next is not guranteed // p1 now points to the same location as p char *p1 = p; // another pointer to char which points to the // 100th character of the array, note that // this can be treated as a pointer to an array // for the remaining 100-odd elements char *p2 = &p[100]; // free the memory for 200 chars delete [] p1; // **Update:** Doug. T // [...] p and p2 are now pointing to freed memory // and accessing it will be undefined behavior // depending on the executing environment.