int *p; int **pp;
(1)p = new int(10), p= new int[10]的区别:
前者指分配4字节存放默认整数10
后者指分配40字节存放整数,在栈内存中存放了一个指向一块堆内存[10]的指针(p);
后者等价于 p=(int *)malloc(10*sizeof(int));
都存放在堆中,编译器不释放,一般由 程序员释放,new与delete对应。如果程序员不释放,则最后由OS释放。
(2)int a; a存放在栈中。由编译器释放。
(3)pp= new int*[ 10] 开辟大小为10的int*数组