如题!
好象有时不new也可以用!
请解释一下new与不new有什么分别?
什么时候需要new(动态分配)?
谢谢!!1
当然不是用指针就要用new。
用new是在堆上动态申请分配内存空间,用指针指向它,你才可以控制住它,用完了,你也要通过指针用delete回收掉,不然就会造成内存泄漏。
new 是把对象放入heap中
一般的是在stack中。
new 一般在动态使用中,就是运行时才构造对象
你可以
int x;
cin >>x;
char* p=new char[x];
但是不能直接
char x[x];
这就是差别的较常见的一种
还有其他很多,慢慢体会吧。
指针是个特殊的变量,指针变量本身也占用4个字节的内存,用于存放指针本身的地址,至于指针指向什么地址,则看如何操作了。
不一定
int *p1 = new int(5) ; //指针本身在stack, 指向的整数在heap
int a = 5 ;
int *p2 = &a ;//指针本身在stack, 指向的整数也在stack
只不过如果指针指向new出来的对象,你要负责释放对象
delete p1 ;
vc环境下一定要.
要不就是野指针了.
以前BC++31 Dos下的时候没有考虑malloc,new.
当然不一定了,指针也可以指向实际对象的啊!
new在堆上。
一般的指针在栈上。
这是决定性的区别。
new指的是动态分配,即在堆上分配内存。而如 int a =10 ;int * p = &a;
这时的指针p就不是指向堆上的了。
该结贴了
是啊是啊
只定义指针而不分配空间,那定义这个指针有什么意义啊。
程序中定义指针是通过指针来操作空间中的内容的,所以必须分配空间。