VC能否编程知道一个malloc的指针指向的内存的大小?该怎么解决

VC能否编程知道一个malloc的指针指向的内存的大小?
C++是可以做到的:
C/C++ code

struct O{
    int o;
    ~O(){}
};
int main(void){
    O* po=new O[3];
    int* pi=(int*)po;
    size_t number=pi[-1];



这里可以得到number=3.
因为new操作符在指针的开头存储了对象的个数。

问题是C的malloc把这个信息存储在哪里? free是如何得到这个信息的?
我知道这个和编译器/crt的实现有关,不过我还是想实验一下能不能拿到。
我尝试像下面这样,发现不行。malloc和new的实现是不一样的:
C/C++ code

    O* po2=(O*)malloc(3*sizeof(O));
    int *pi2=(int*)po2;
    size_t number2=pi2[-1];



如何知道C的malloc分配了多少呢?

------解决方案--------------------
又发了一遍?

_msize()函数!