关于new 和 delete 关键字功能的叙述,不正确的是( ) A. C++程序的内存空间,可以分为代码区(text segment)、静态存储区(Data Segment)、栈区(Stack)、堆区(Heap)。new关键字用于从堆区中动态申请创建对象所需的内存空间。 B. new动态申请内存空间成功后,返回该内存区域的首地址;同时,也会自动调用相关类的构造函数。 C. delete用于删除new建立的对象,并释放指针所指向的内存空间,同时,也会自动调用对象的析构函数。 D. B * ptr=new B(5);delete ptr; 假设上述语句中,new申请的内存空间首地址为Addr,存放ptr指针变量值的内存空间首地址为 PAddr,则执行delete ptr 语句后,Addr、PAddr指向的内存区域均会被系统收回。
时间: 2024-03-28 11:40:54 浏览: 147
D. B * ptr=new B(5);delete ptr; 假设上述语句中,new申请的内存空间首地址为Addr,存放ptr指针变量值的内存空间首地址为 PAddr,则执行delete ptr 语句后,Addr、PAddr指向的内存区域均会被系统收回。 这个叙述是正确的,delete会释放new动态申请的内存空间并删除对象。但是,存放ptr指针变量值的内存空间首地址不会被系统收回,它只是一个指针变量,它所占用的内存空间会在该变量的作用域结束时被系统收回。
阅读全文