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

如何通过 指针来求出内存空间大小

2012-05-03 
怎么通过 指针来求出内存空间大小C/C++ codeint *x static_castint*(operator new[](sizeof(int)*5))

怎么通过 指针来求出内存空间大小

C/C++ code
int *x = static_cast<int*>(operator new[](sizeof(int)*5));怎么通过指针x来 求 出 动态空间分配的大小--------------------template<class   Any>   int  LengthOfArray(Any   *   p)   {       return   int(p+1)   -   int(p);   } cout << LengthOfArray(&a) ; 我一直看不懂,这个是怎么求到大小的-----------------------  


[解决办法]
这个求得是一个Any类的大小,p是指向Any类对象的指针,int(P)就是这个p所指向的元素的地址,int(P+1)是下一个元素的地址,两个地址相减就得到了一个Any类所占的内存空间。
这里的关键是P+1,指针+1是地址移动的意思,移动的位数是p指针的类型决定的。
正是基于上面的原因就能求出一个Any类的大小。
[解决办法]
P的下一个元素减去P自己,这样就得到一个元素的大小..
对于数组对象类型的指针 +1,就是移到下一个数组元素

热点排行