在堆上分配。用VC6编译。debug下,通过new返回的指针减去4个dword,就可以得到这个对象的大小。release下应该也有类似的地方来记录对象的大小,请问各位高手,该如何得到?如果没有这个值,那delete是如何知道这个对象占用了多少空间?先谢过了!

解决方案 »

  1.   

    _msize
    Returns the size of a memory block allocated in the heap.
    ////////////////////////////////////////////////////////
    sizeof Operator
    sizeof expressionThe sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type (including aggregate types). This keyword returns a value of type size_t.
      

  2.   

    楼上的意思好象是用SIZEOF来求。
      

  3.   

    说了用_msize,你还在说用SIZEOF!
    SIZEOF在编译的时候就计算出来了,编译后写到EXE中的其实是一个常量。
      

  4.   

    谢谢楼上几位!用了_msize,会发现有一些超大数据,不知道编译参数是不是会对这个值有影响?
      

  5.   

    _msize  和 sizeof 还是有区别的~~_msize 只适用于动态分配的对象,
    如通过 malloc 分配的空间的大小,
    new 生成的对象的大小 等等。
    对于局部的栈对象是不适用的 ~~
      

  6.   

    谢楼上二位。我现在就是想获得用new分配的一个对象的大小,所以用_msize,可是结果出来会有很多异常值,如负值或非常大的值。不知道这个该如何解释下。或者还有其他方法没?谢谢了。