Za pomocą operatora new można przydzielić pamięc o z góry określonej lokalizacji. Istnieje do tego celu specjalna forma operatora new — dostępna po dołączeniu pliku nagłówkowego new — o następującej składni:
       new (adres) Typ;
       new (adres) Typ[wymiar];
W ten sposób przydzielamy na pojedynczy obiekt lub tablicę
obszar pamięci rozpoczynający się od adresu będącego wartością
wyrażenia
adres. W zasadzie obszar ten powinien mieścić
się w jakimś obszarze pamięci przydzielonym wcześniej za pomocą
„zwykłego”
new.
Jest to operacja szybka, ponieważ tak naprawdę nie wymaga
alokowania pamięci; kompilator zakłada, że programista wie co robi.
Ponieważ tak naprawdę przydziału pamięci nie ma, obszar ten
powinien zostać zwolniony przez wywołanie
delete
ze wskaźnikiem takiego typu i zawierającym ten adres, który był
użyty w „prawdziwym”
new, a nie w 
new
 lokalizującym!
W poniższym przykładzie alokujemy tablicę
itab
 liczb typu
int, a potem, wewnątrz obszaru pamięci przez nią zajmowanego,
tablicę
dtab
 liczb typu
double:
      1.  #include <iostream>
      2.  #include <new>
      3.  using namespace std;
      4.  
      5.  int main() {
      6.      int* itab = new int[8];
      7.      for (int i = 0; i < 8; i++) itab[i] = i+1;
      8.  
      9.      double* dtab = new (itab+2) double[2];              ➊
     10.      for (int i = 0; i < 2; i++) dtab[i] = (1+i)/3.;
     11.  
     12.      cout << "\nTablica dtab:\n\n";
     13.      for (int i = 0; i < 2; i++)
     14.          cout << "  dtab[" << i << "] = " << dtab[i] << endl;
     15.  
     16.      cout << "\nTablica itab:\n" << endl;
     17.      for (int i = 0; i < 8; i++)
     18.          cout << "  itab[" << i << "] = " << itab[i] << endl;
     19.  
     20.      delete [] itab;
     21.  }
Najpierw alokujemy tablicę 8 liczb całkowitych i wypełniamy
ją kolejnymi liczbami od 1 do 8. Tablica zajmuje 
8×4 = 32
bajty. W linii ➊ pod adresem trzeciego elementu tej tablicy
„alokujemy” tablicę dwóch liczb typu
double
i inicjujemy ją wartościami 
 oraz
 oraz 
 .
Ta tablica zajmuje 
2×8 = 16 bajtów.
Teraz w pamięci pod adresem wskazywanym przez
itab
umieszczone są najpierw dwie liczby
całkowite (w sumie 8 bajtów), następnie dwie liczby
rzeczywiste (16 bajtów) i znów dwie liczby całkowite (8 bajtów).
Że tak jest rzeczywiście, przekonuje nas wydruk tego programu:
.
Ta tablica zajmuje 
2×8 = 16 bajtów.
Teraz w pamięci pod adresem wskazywanym przez
itab
umieszczone są najpierw dwie liczby
całkowite (w sumie 8 bajtów), następnie dwie liczby
rzeczywiste (16 bajtów) i znów dwie liczby całkowite (8 bajtów).
Że tak jest rzeczywiście, przekonuje nas wydruk tego programu:
    Tablica dtab:
      dtab[0] = 0.333333
      dtab[1] = 0.666667
    Tablica itab:
      itab[0] = 1
      itab[1] = 2
      itab[2] = 1431655765
      itab[3] = 1070945621
      itab[4] = 1431655765
      itab[5] = 1071994197
      itab[6] = 7
      itab[7] = 8
Widać, że rzeczywiście tablice te zajmują
ten sam obszar w pamięci. Dwie liczby typu
double
„zamazały” cztery liczby całkowite, pozostawiając jednak
dwa pierwsze i dwa ostatnie elementy tablicy
itab
nienaruszone.
Opisany rodzaj przydzielania pamięci stosuje się często aby wykorzystać na nowe dane wcześniej zaalokowane a już niepotrzebne obszary pamięci — jest to znacznie szybsze niż zwalnianie i potem przydzielanie pamięci od nowa.
T.R. Werner, 21 lutego 2016; 20:17