VC能否编程知道一个malloc的指针指向的内存的大小?该怎么解决
VC能否编程知道一个malloc的指针指向的内存的大小?
C++是可以做到的:
这里可以得到number=3.
因为new操作符在指针的开头存储了对象的个数。
问题是C的malloc把这个信息存储在哪里? free是如何得到这个信息的?
我知道这个和编译器/crt的实现有关,不过我还是想实验一下能不能拿到。
我尝试像下面这样,发现不行。malloc和new的实现是不一样的:
如何知道C的malloc分配了多少呢?
------解决方案--------------------
又发了一遍?
_msize()函数!
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()函数!