_msize() 返回 new 分配内存的大小

         这里介绍一个不常见到的函数,即:_msize()。其原型为:size_t   _msize( void * memblock );

         其中返回类型 size_t 是这样定义的:

                                               #define __SIZE_TYPE  long unsigned int

                                               typedef __SIZE_TYPE__  size_t;

         即size_t实际上是无符号长整型,在32位系统上位32位,在64位系统中位64位。


         参数 void * memblock 是一个 void 类型的指针,void * 可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值。

        一般我们要返回某个类型的数据所占用的内存首先是考虑 sizeof() 和 strlen() 函数,但对于用 new 分配出来的内存来说如:char * pc = new char[10] ; 想返回 pc 所指向的内存的大小,sizeof(pc), 或strlen(pc) 都是得不到所需要结果的,因为 sizeof() 返回的是指针本身所占用内存的大小,strlen() 只能用char*做参数,且必须是以''\0''结尾的。

        而_msize() 函数则可以返回用 new 方式分配出来的内存大小。如下所示:

                                            char * pc = new char[10] ;

                                            int n = _msize(pc) / sizeof(char);

        最后得到的结果是 n = 10。

  • 10
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值