C ++ Array: почему delete [] не работает? [Дубликат]

На этот вопрос уже есть ответ:

C ++ delete - удаляет мои объекты, но я все еще могу получить доступ к данным? 13 ответов

Когда я запускаю следующий код:

#include <iostream>
using namespace std;

main(){
  //declare:
    char* TestArray = new char[16];
    for(char i=0; i<16; i++){
            TestArray[i]=rand() % 10;
    }
  //output Array:
    for(char i=0; i<16; i++){
            cout << int(TestArray[i]) << " ";
    }
  //delete it:
    delete[] TestArray;
  //output result:
    for(char i=0; i<16; i++){
            cout << int(TestArray[i]) << " ";
    }

результат:

3 6 7 5 3 5 6 2 9 1 2 7 0 9 3 6 //declared Array
0 0 0 0 0 0 0 0 9 1 2 7 0 9 3 6 //'deleted' Array

Так, проблема в том, чтоdelete[] не удаляет весь массив. Если я сделаю массив из int, количество удаленных слотов будет 2. Я использую g ++ / gcc 4.9 под Arch Linux.

В чем причина этого и как я могу это исправить?

Кстати, число «0» в «удаленном» массиве, кажется, эквивалентно:

sizeof(TestArray)/sizeof(TestArray[0])

Ответы на вопрос(1)

Ваш ответ на вопрос