社区
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的构造函数只会被调用一次
“小屋阿萨”谢谢了,呵呵……
...全文
196
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
面试官:讲区别(提示说比如说返回值呀) 一、malloc free是库函数,头文件stdlib.h中
new
delete
是
c++
中的关键字 1. malloc()函数 1.1 malloc的全称是memory allocation,中文叫动态内存分配。 原型:extern void *malloc(unsigned int num_bytes); 说明:分配长度为num_bytes字...
浅谈
C++
中的
new
/
delete
和
new
[]/
delete
[]
在
C++
中,你也许经常使用
new
和
delete
来动态申请和释放内存,但你可曾想过以下问题呢?
new
和
delete
是函数吗?
new
[] 和
delete
[] 又是什么?什么时候用它们?你知道 operator
new
和 operator
delete
吗?为什么
new
[] 出来的数组有时可以用
delete
释放有时又不行?… 如果你对这些问题都有疑问的话,
C++
new
和
delete
的讲解
概述 运算符
new
和
delete
看起来很简单,但是它们也有不少的知识点。对于
new
来说就有
new
operator、operator
new
、placement
new
和
new
operator[]等。对于
delete
也有
delete
operator、poerator
delete
、
delete
operator[] 等。下面就进行按个整理。 1、
new
operator 平...
【
C++
】 深入探究
new
和
delete
在
C++
中,我们应该经常会用到
new
、
delete
,它们是
C++
的一个关键字,同时也是一个操作符,下面我将我对这两者的了解和学习做一个总结和探讨。
new
和
delete
的全过程首先我们定义一个对象A: struct A { size_t h; };当我们使用关键字
new
在堆上动态创建一个对象A时,比如 A* p =
new
A(),它实际上做了三件事: 向堆上申请一块内存
C++
:
new
和
delete
本篇博客作为
C++
:
new
和 detele操作符的知识总结class Apublic::_a(a)~A()private:int _a;return 0;注意:在申请自定义类型的空间时,
new
会调用构造函数,
delete
会调用析构函数
new
的原理1.调用operator
new
函数申请空间2.在申请的空间上执行构造函数,完成对象的构造
delete
的原理1.在空间上执行析构函数,完成对象中资源的清理工作。
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章