首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

再问STL源码剖析之空间配置器的有关问题

2012-02-09 
再问STL源码剖析之空间配置器的问题STL源码剖析,在2.1.1节 设计一个简单的空间配置器 中有下面一段:templa

再问STL源码剖析之空间配置器的问题
STL源码剖析,在2.1.1节 设计一个简单的空间配置器 中有下面一段: 
  
  template <class T> 
  inline T* _allocate(ptrdiff_t,T*){ 
  set_new_handler(0); 
  T* tmp = (T*)(::operator new((size_t)(size* sizeof(T)))) 

  我想问下sizeof(T)的返回值是T类型所占用的字节数,为什么还要与ptrdiff_t类型值相乘呢?? 
  忘各位指教啊!

[解决办法]
lz ,_allocate 这函数的意思不是分配 T 大小的空间;是分配size个T大小的空间
[解决办法]

探讨
STL源码剖析,在2.1.1节 设计一个简单的空间配置器 中有下面一段:

    template <class T>
    inline T* _allocate(ptrdiff_t,T*){
    set_new_handler(0);
    T* tmp = (T*)(::operator new((size_t)(size* sizeof(T))))

  我想问下sizeof(T)的返回值是T类型所占用的字节数,为什么还要与ptrdiff_t类型值相乘呢??
  忘各位指教啊!

[解决办法]
探讨
引用:引用:STL源码剖析,在2.1.1节 设计一个简单的空间配置器 中有下面一段:       template <class T>     inline T* _allocate(ptrdiff_t,T*){     set_new_handler(0);     T* tmp = (T*)(::operator new((size_t)(size* sizeof(T))))   我想问下sizeof(T)的返回值是T类型所占用的字节数,为什么还要与ptrdiff_t类型值相乘呢??   忘各位指教啊! 又来了,又不看我之前给你的回复


呵呵
我在不同板块发的,那个我看到了,谢谢
另外我又在那边问了新的问题是:

在后面引用_allocate函数的时候是这样的:
pointer allocate(size_t n,const void* hint=0)
{
return _allocate((ptrdiff_t) n,(T*)0);
}

我不明白为什么先要将size_t类型强制转换为ptrdiff_t,然后又将ptrdiff_t类型强制转换为size_t类型(在_allocate函数中),为什么要这样转来转去呢?原因是什么??

谢谢指教!!

热点排行