关于C++里面的new和delete

关于C++里边的new和delete
下边四个选项中只有一个是对的,选出你的答案,并说明这个选项正确的理由,其他选项不对的理由


A,使用new操作符,可以动态分配全局堆中的内存资源
B,若P的类型由A强制转换为void*,那么执行语句delete P*时,类A的析构函数不会被调用
C,实现全局函数时,new和delete通常成对的出现在由一对匹配的花括号限定的语句块中
D,执行语句 A*P=new A[100]时,类A的构造函数只会被调用一次


“小屋阿萨”谢谢了,呵呵……

------解决方案--------------------
B
------解决方案--------------------
D 我實際操作了...是錯的, 會调用100次
B 題目有問題,如果是
A * p = new A;
void * t = (void *)p;
delete t; //肯定不會調用类A的析构函数
------解决方案--------------------
选B

A * p = new A; 
delete (void*)p; //不会调用A的析构

A,使用new操作符,可以动态分配全局堆中的内存资源 
A也没发现哪里不对,单全局堆这个词第一次见 如果就是我们常说的堆内存,那应该没有问题

C,实现全局函数时,new和delete通常成对的出现在由一对匹配的花括号限定的语句块中 
这句话也说的莫名奇妙 看不出错来 暂且认为对吧

D,执行语句 A*P=new A[100]时,类A的构造函数只会被调用一次 
产生100个A对象 肯定调用100词构造函数

------解决方案--------------------
A、win32里不区分全局堆和局部堆
B、A * p = new A; void * t = (void *)p; delete t; //肯定不會調用类A的析构函数
C、没看懂
D、显然会调用100次构造函数
------解决方案--------------------

B正确,试过了;
C,D错误。

A哪里错了?

------解决方案--------------------
说实话,这种考试和考级时喜欢出的细节题我感觉用处不大……哪怕能做100分也比不上一个自己编一个实用程序