int main (void) { int *x = new int; *x = 7; int *arr = new int[*x]; arr[0] = 3; arr[6] = -2; delete arr; // legal but may cause memory leak; delete[] arr would be safer. delete[] x; // legal but doesn't make sense because x isn't really an array delete x; // compiles but doesn't make sense because x has already been deleted // If you're lucky, run-time library will catch the duplicate deletion. // If not, can get crashes, randomly-changing data, etc. }