>中的一个问题

OOPhaisky OOPhaisky 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
<<深度探索C++对象模型>>261页的PV __vec_new函数中的一段:

// 把数组元素数目放到cache中
int status = __insert_new_array( ptr_array, elem_count );
if (status == -1) {
// 在exception Handling之下将丢出exception
// 将丢出exception bad_alloc
if ( alloc )
delete ptr_array;
return 0;
}

有三个问题:
1.“把数组元素数目放到cache中”,这里说的“cache”是不是前面提到的“cookie”?
2. __insert_new_array( ptr_array, elem_count )返回-1意味着什么?是不是意味着“把elem_count放到cookie中失败”?
3.如果__insert_new_array( ptr_array, elem_count )返回-1的确意味着“把elem_count放到cookie中失败”,那么我们来看看当status==-1时执行的操作:如果"if (alloc)"成立(由前面的程序可知这意味着ptr_array是用new分配的数组),则执行delete ptr_array释放空间。但是这里存在一个严重的逻辑问题:既然“把elem_count放到cookie中失败”,那么在分配的内存区块前面(即ptr_array前面)的cookie里面并没有包含区块的大小,所以怎么能delete呢?delete并不知道要释放多少内存啊??

望看过此书的朋友给解答以下,先谢谢了。
...全文

相关推荐

评论 5
收藏 已收藏
分享
返回顶部
OOPhaisky
C++ 语言 65,214 成员 250,514 内容