社区
C++ 语言
帖子详情
关于C++里边的new和delete
Xiaowuasa
2009-04-09 03:56:29
下边四个选项中只有一个是对的,选出你的答案,并说明这个选项正确的理由,其他选项不对的理由
A,使用new操作符,可以动态分配全局堆中的内存资源
B,若P的类型由A强制转换为void*,那么执行语句delete P*时,类A的析构函数不会被调用
C,实现全局函数时,new和delete通常成对的出现在由一对匹配的花括号限定的语句块中
D,执行语句 A*P=new A[100]时,类A的构造函数只会被调用一次
“小屋阿萨”谢谢了,呵呵……
...全文
194
18
打赏
收藏
关于C++里边的new和delete
下边四个选项中只有一个是对的,选出你的答案,并说明这个选项正确的理由,其他选项不对的理由 A,使用new操作符,可以动态分配全局堆中的内存资源 B,若P的类型由A强制转换为void*,那么执行语句delete P*时,类A的析构函数不会被调用 C,实现全局函数时,new和delete通常成对的出现在由一对匹配的花括号限定的语句块中 D,执行语句 A*P=new A[100]时,类A的构造函数只会被调用一次 “小屋阿萨”谢谢了,呵呵……
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
铭毅天下
2012-07-19
打赏
举报
回复
class CBase
{
public:
CBase() { cout << "CBase is running!\n";}
~CBase() { cout << "~CBase() is running!\n";}
};
int main()
{
//选项B错误
CBase * pBase = new CBase; //调用构造函数
void * pVoid = (void *)pBase;
delete pVoid; //肯定不會調用类A的析构函数
//选项D错误
CBase *pBaseN = new CBase[100]; //调用构造函数100次
delete []pBaseN; //调用析构函数100次
return 0;
}
hiboys
2009-04-10
打赏
举报
回复
a
gao125210
2009-04-10
打赏
举报
回复
D显然不对啊,怎么可能?
Xiaowuasa
2009-04-10
打赏
举报
回复
A说的是全局堆,全局堆就是所有未分配的空间,它包括了栈区、但只能分配堆区的空间
Xiaowuasa
2009-04-10
打赏
举报
回复
个人当时做这道题的时候选的是B,可正确答案是D……
jackyjkchen
2009-04-10
打赏
举报
回复
说实话,这种考试和考级时喜欢出的细节题我感觉用处不大……哪怕能做100分也比不上一个自己编一个实用程序
melonsmile
2009-04-10
打赏
举报
回复
B正确,试过了;
C,D错误。
A哪里错了?
yshuise
2009-04-09
打赏
举报
回复
A ?假如我对new操作符进行重载,让它调用栈的内存。
bfhtian
2009-04-09
打赏
举报
回复
[Quote=引用 4 楼 jame2001 的回复:]
D 我實際操作了...是錯的, 會调用100次
B 題目有問題,如果是
A * p = new A;
void * t = (void *)p;
delete t; //肯定不會調用类A的析构函数
[/Quote]
但题目中是delete p,还是要调用A的析构函数的
Jalien
2009-04-09
打赏
举报
回复
B肯定是对的 因为转换为void类型的指针时丢失了类型信息,编译器不知道调用哪个类的析构函数,但是这块内存空间释放了
黄志义
2009-04-09
打赏
举报
回复
A、win32里不区分全局堆和局部堆
B、A * p = new A; void * t = (void *)p; delete t; //肯定不會調用类A的析构函数
C、没看懂
D、显然会调用100次构造函数
sayoath
2009-04-09
打赏
举报
回复
我选A
使用new操作符,可以动态分配全局堆中的内存资源
new 当然是NEW 在堆中的 自己NEW出的东西也要自己删除 new 不就是动态分配嘛
bruce_nie
2009-04-09
打赏
举报
回复
B
Dinelgua
2009-04-09
打赏
举报
回复
选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词构造函数
jame2001
2009-04-09
打赏
举报
回复
D 我實際操作了...是錯的, 會调用100次
B 題目有問題,如果是
A * p = new A;
void * t = (void *)p;
delete t; //肯定不會調用类A的析构函数
pb215574980
2009-04-09
打赏
举报
回复
显然选D
speeder53
2009-04-09
打赏
举报
回复
mk
黄志义
2009-04-09
打赏
举报
回复
B
【面经总结
c++
】C
里边
已经有了malloc、free,
C++
中为什么还要有
new
和
delete
本文深入解析
C++
中malloc/free与
new
/
delete
的区别,包括内存分配、初始化、释放等关键操作,以及两者在动态内存管理中的角色与适用场景。
浅谈
C++
中的
new
/
delete
和
new
[]/
delete
[]
本文深入探讨
C++
中
new
/
delete
及
new
[]/
delete
[]的使用机制,解析这些关键字背后的操作细节,包括内存分配、对象初始化与析构过程,以及不当使用可能导致的问题。
C++
new
和
delete
的讲解
本文详细介绍了
C++
中
new
和
delete
的相关知识点,包括
new
operator、operator
new
、placement
new
、operator
delete
、
delete
operator以及数组的
new
和
delete
。重点讨论了
new
与malloc的区别,如内存分配位置、返回类型安全性、内存分配失败处理和是否指定内存大小。
C++
:
new
和
delete
本文是
C++
中
new
和
delete
操作符的知识总结。介绍了
C++
内存管理,包括内置和自定义类型,以及
delete
与
new
不匹配使用问题;阐述了operator
new
与operator
delete
函数;分析了
new
和
delete
对内置和自定义类型的实现原理;还对比了malloc/free和
new
/
delete
的异同。
【
C++
】 深入探究
new
和
delete
本文深入探讨
C++
中
new
和
delete
操作符的工作原理及应用,包括
new
的三种形态、
new
[]与
new
的区别、
delete
与内存释放等内容。
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章