void func()
{
A *a=new A();
}
因为:局部变量是在栈上创建的,new创建的内存空间是在堆上创建的,它们两个之间是独立的,局部变量被销毁的时候,是在栈上被弹出销毁,而不会销毁new在堆上创建的内存空间!如果要在销毁变量的同时,销毁其所指向的对象,那么可以使用C++11提供的智能指针,其具有随着指针的销毁而销毁指针指向对象的内存空间的特性。
文章讨论了C++中局部变量和通过new在堆上创建的对象的区别。局部变量在栈上创建,当变量作用域结束时自动销毁,而new分配的内存需要手动管理。C++11引入的智能指针提供了一种解决方案,它能在指针销毁时自动释放所指向的堆内存,以防止内存泄漏。
void func()
{
A *a=new A();
}
因为:局部变量是在栈上创建的,new创建的内存空间是在堆上创建的,它们两个之间是独立的,局部变量被销毁的时候,是在栈上被弹出销毁,而不会销毁new在堆上创建的内存空间!如果要在销毁变量的同时,销毁其所指向的对象,那么可以使用C++11提供的智能指针,其具有随着指针的销毁而销毁指针指向对象的内存空间的特性。
542
2006
1144

被折叠的 条评论
为什么被折叠?