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])