Jest wyraźnie napisane: (int*) jest zbyt duże, żeby zrzutować je na (int). Pierwsze jest adresem (32 albo 64 bitowa reprezentacja całkowita bez znaku), drugi jest 32 bitową liczbą całkowitą ze znakiem. Rzutowanie w żadną stronę nie ma sensu.
EDIT:
I proponuję nie używać zabawkowego IDE z absolutnie przestarzałym kompilatorem (widzę, że screen z Windows), tylko albo darmowy Visual Studio Express C++ 2017 (https://visualstudio.microsoft.com/pl/vs/express/), albo darmowy Qt Creator 4.6 Open Source edition (https://www.qt.io/download) z kompilatorem albo GCC 7/8 albo Clang 6/7.
EDIT #2:
Poprawiając program tak, aby się skompilował (nie tak aby był poprawny!) otrzymujemy:
#include <iostream>
int main()
{
using std::cin, std::cout, std::endl;
/* Zaszyte na stałe, nie ma wpływu na poprawność */
auto ile = 4u;
auto tab = new int[ile];
for ( auto i = 0u; i < ile; i++ ) {
cout << (long int)tab << endl;
tab++;
}
delete[] tab;
return 0;
}
a wynik:
39775856
39775860
39775864
39775868
free(): invalid pointer
The program has unexpectedly finished.
* Liczby za każdym razem są inne (Dlaczego? Co to w ogóle za wartości? O ile się różnią kolejne z nich? Dlaczego akurat o tyle?)
* Program kończy się panikiem w delete[] (Dlaczego? Jak to poprawić?) - pod Linuksem jest program Valgrind do szukania takich błędów. Można go wywołąć bezpośrednio z QtCreatora. Dla przykładowego projektu komunikat naprowadza na przyczynę błędu:
Invalid free() / delete / delete[] / realloc()
in main in /home/pawel/Projekty/QtCreator/ptrs/main.cpp:17
1: operator delete[](void*) in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so
2: main in /home/pawel/Projekty/QtCreator/ptrs/main.cpp:17
Address 39775872 is 0 bytes after a block of size 16 alloc'd 1: operator new[](unsigned long) in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so
2: main in /home/pawel/Projekty/QtCreator/ptrs/main.cpp:10
Czyli "zwalniany blok jest 0 bajtów za zaalokowanym blokiem 16 bajtów".