VC能否编程知道一个malloc的指针指向的内存的大小?该如何处理
VC能否编程知道一个malloc的指针指向的内存的大小?C++是可以做到的:C/C++ codestruct O{int o~O(){}}int
VC能否编程知道一个malloc的指针指向的内存的大小?
C++是可以做到的:
C/C++ codestruct 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分配了多少呢?
[解决办法]VC的_msize()函数