看过STL源码剖析的朋友进来指点一下.在P116讲到vector的构造函数的时候,如:vector(size_type n)会调
看过<<STL源码剖析>>的朋友进来指点一下.
在P116讲到vector的构造函数的时候,如:
vector(size_type n);
会调用到 alloc::allocate(n).
现在的问题是, vector(size_type n)中的n, 是元素的个数, 而 alloc::allocate(n)中的n, 是字节数. 好像有点问题啊. 本来要分配n个int的, 这不成了n个字节了吗?
[解决办法]
static void* allocate(size_t n)
{
if ( n > (size_t)__MAX_BYTES )
{....}
}
__MAX_BYTES 就是那个分水岭128. 这个n不是字节吗?
==================================================
allocate是一个函数,是alloc::allocate调用的
[解决办法]
兄弟,看书认真一点,在P54
