社区
C语言
帖子详情
关于new和delete的对应问题
frman
2006-04-13 04:55:17
如果int *a = new int; 那应该delete a;
如果int *a = new int[100]; 那应该delete []a;
如果BITMAPINFO * a = (LPBITMAPINFO) new BYTE[size];
那应该delete a; 还是delete []a ?
...全文
143
7
打赏
收藏
关于new和delete的对应问题
如果int *a = new int; 那应该delete a; 如果int *a = new int[100]; 那应该delete []a; 如果BITMAPINFO * a = (LPBITMAPINFO) new BYTE[size]; 那应该delete a; 还是delete []a ?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
petunsecn
2006-04-15
打赏
举报
回复
在此int和BITMAPINFO一样都是数据类形,后者!!!
frman
2006-04-13
打赏
举报
回复
或者这样
我如果delete一个指针出错,应该怎么调试排错呢?
memory check error at 0x018AE760 = 0x00, should be 0xFD.
frman
2006-04-13
打赏
举报
回复
但是a是LPBITMAPINFO的,它也确实得到了一个BITMAPINFO的空间,是不是应该不能delete []a;呢
jixingzhong
2006-04-13
打赏
举报
回复
连续内存释放用 delete []a ...
如果用 delete a,
那么就会只释放 内存的第一个类型空间,
后面的内存没有释放,
发生泄漏 ....
xombat
2006-04-13
打赏
举报
回复
同意:后者。
ma100
2006-04-13
打赏
举报
回复
后者....
jinjiajie
2006-04-13
打赏
举报
回复
后者....
C++的
new
和
delete
new
和
delete
使用及原理、定位
new
表达式
200-详解C++的
new
和
delete
1、深入理解
new
和
delete
new
和
delete
称作运算符 我们转反汇编看看: 这2个运算符本质也是相应的运算符的重载的调用 1、malloc按字节开辟内存的;
new
开辟内存时需要指定类型
new
int[10] 所以malloc开辟内存返回的都是void* 而
new
相当于运算符的重载函数 operator
new
->返回值自动转成指定的类指针 int* 2、malloc只负责开辟空间,
new
不仅仅有malloc的功能,可以进行数据的初始化
new
int(20);//初始化2
new
和
delete
为什么要匹配使用
关于
new
和
delete
的使用相信大家并不陌生,可是为什么使用
new
的时候要用
delete
,使用
new
[ ] 的时候又要用
delete
[ ]。使用
delete
释放
new
[ ] 申请的内存又会发生什么?为什么有时不匹配不会报错,有时又会报错呢?
new
/
delete
详解
new
和
delete
是 C++ 用于管理
堆内存
的两个运算符,
对应
于C语言中的 malloc 和 free,但是malloc和free是函数,
new
和
delete
是运算符。
new
、
delete
、 malloc 、 free 关系 ?
delete
会调用对象的析构函数,和
new
对应
free只会释放内存,
new
调用构造函数。malloc与free是C++/C语言的标准库函数,
new
/
delete
是C++的运算符。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。因此C++语言需要一个能完成动态内存分配和初始化工作的运算符
new
,以及一个能完成清理与释放内存工作的运算符
delete
。...
C语言
69,382
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章