开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 8 天,点击查看活动详情
Array new
自定义一个类A,测试Array new
测试new 10个int
发现直接delete,不加[]还是正确的
继续测试,一个Demo类含有3个int
申请3个demo类,那么就有9个int
如果这是还是直接delete,因为内存中存的是3(有3个),所以只会删除3个int,而实际却有9个
所以若不加[],则会出现内存泄露的情况
右边61h是16进制,计算过程:
- (32 + 4)【黄色部分】 + 4【存3的那个部分】 + (9 * 4)【9个int】 + (4 * 2)【上下两个边界,写61h那里】 = 84
- 84再扩充到96(需要16的倍数)
- 96 = 60h(16进制转换)
- 所以上下填充61h(为啥+1,有点没有懂)
61h是16进制,计算过程是
- (32 + 4)【黄色部分】 + 4【存3的那个部分】 + (9 * 4)【9个int】 + (4 * 2)【上下两个边界,写61h那里】 = 84
- 84再扩充到96(需要16的倍数)
- 96 = 60h(16进制转换)
- 所以上下填充61h(为啥+1,有点没有懂)
总结:
- 使用new [],删除时使用delete [],这样不容易出错
- 虽然有时只使用delete也不会报错,但是类似于上面demo类的情况,则会出现内存泄露的情况(小心谨慎使用)
最后
仅为个人笔记,欢迎您指出错误,感谢!