64,682
社区成员
发帖
与我相关
我的任务
分享
[quote=引用 59 楼 真相重于对错 的回复:] [quote=引用 58 楼 早打大打打核战争 的回复:] delete[]为什么不需要你告诉它要释放的数组有多大?是因为它知道这个信息,这个信息并不是编译时确定的,而是运行时检查new[]在分配块之前的信息头中保存的信息,你好好理解一下~~~
[quote=引用 58 楼 早打大打打核战争 的回复:]
delete[]为什么不需要你告诉它要释放的数组有多大?是因为它知道这个信息,这个信息并不是编译时确定的,而是运行时检查new[]在分配块之前的信息头中保存的信息,你好好理解一下~~~
delete[]为什么不需要你告诉它要释放的数组有多大?是因为它知道这个信息,这个信息并不是编译时确定的,而是运行时检查new[]在分配块之前的信息头中保存的信息,你好好理解一下~~~
[quote=引用 52 楼 真相重于对错 的回复:] [quote=引用 51 楼 早打大打打核战争 的回复:] 没有误解,我说的是delete和delete[]都要检查待释放的分配块前的信息头,这一步是少不了的,否则不可能正确释放。注意我说的是从语言设计角度完全可以不需要delete[],而不是当前实现,当前实现delete和delete[]肯定是有区别的。
[quote=引用 51 楼 早打大打打核战争 的回复:]
没有误解,我说的是delete和delete[]都要检查待释放的分配块前的信息头,这一步是少不了的,否则不可能正确释放。注意我说的是从语言设计角度完全可以不需要delete[],而不是当前实现,当前实现delete和delete[]肯定是有区别的。
没有误解,我说的是delete和delete[]都要检查待释放的分配块前的信息头,这一步是少不了的,否则不可能正确释放。注意我说的是从语言设计角度完全可以不需要delete[],而不是当前实现,当前实现delete和delete[]肯定是有区别的。
[quote=引用 46 楼 真相重于对错 的回复:] [quote=引用 45 楼 早打大打打核战争 的回复:] 实际上内存分配块之前的信息头远不止4字节,可能多达几十字节,里面还有分配块的指针用于验证,否则随便传个指针delete/delete[]就瞎释放,把整个堆的分配链都破坏了。
[quote=引用 45 楼 早打大打打核战争 的回复:]
实际上内存分配块之前的信息头远不止4字节,可能多达几十字节,里面还有分配块的指针用于验证,否则随便传个指针delete/delete[]就瞎释放,把整个堆的分配链都破坏了。
实际上内存分配块之前的信息头远不止4字节,可能多达几十字节,里面还有分配块的指针用于验证,否则随便传个指针delete/delete[]就瞎释放,把整个堆的分配链都破坏了。