>中的一个问题
<<深度探索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并不知道要释放多少内存啊??
望看过此书的朋友给解答以下,先谢谢了。
// 把数组元素数目放到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并不知道要释放多少内存啊??
望看过此书的朋友给解答以下,先谢谢了。
...全文
相关推荐
深度探索c++对象模型(2012版本)
总的来说,《深度探索C++对象模型》将带领读者深入C++的核心,理解对象模型的每一个细节,这对于提升C++编程技能,解决复杂问题和优化代码性能具有极大的价值。
深度探索C++对象模型 PDF中文清晰版.zip
深度探索C++对象模型 PDF中文清晰版.zip深度探索C++对象模型 PDF中文清晰版.zip深度探索C++对象模型 PDF中文清晰版.zip深度探索C++对象模型 PDF中文清晰版.zip深度探索
深度探索C++对象模型 PDF
理解这些工具可以提升你的C++编程技能到一个新的水平。总的来说,《深度探索C++对象模型》是一本深入解析C++核心机制的权威之作,无论你是初学者还是经验丰富的开发者,都能从中受益匪浅。
深度探索C++对象模型 超高清pdf
深度探索C++对象模型 超高清
深度探索C++对象模型 PDF中文清晰版
《深度探索C++对象模型》是一本专注于C++编程语言底层机制的专业书籍,它旨在帮助开发者深入了解C++的对象模型,从而能够更高效、更安全地编写代码。


