C++什么时候用new,什么时候不用new

void func()
{
Student st;
st.name="hello";
}
void main()
{
func();
cout<name="hello";
}
void main()
{
func();
cout<name;//正确的调用
}
c++里面, 创建对象,  ClassName object(初始化参数);在Stack栈里面分配空间,自动释放。
或者用 ClassName object=new ClassNam();在heap堆里面分配空间,要手动释放。
当你不确定需要多大的时候用NEW
类里面用NEW实现多态, 有的时候解决类
接口也用NEW, 这个一下说不清楚
用NEW有一定内存泄露的风险, 可以考虑用
1:声明分配内存是在编译阶段进行的,new分配内存是在运行阶段进行的
2:声明被放在栈中,new被分配在堆中或自由存储区中
3:声明创建数组,在编译阶段是就为他分配内存。
new创建在运行阶段 需要创建时就创建,不需要创建时还可以在运行时选择数组长度,
这就是因为int i;cin>>i;int a[i];不成功的原因,因为a[i]要在编译阶段就分配好内存,但是i在运行时才能知道
int i;cin>>i;int * a=new int[i];这样可以,因为都是在运行阶段才进行。

你可能感兴趣的:(c++)