首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

VC能否编程知道一个malloc的指针指向的内存的大小?该如何处理

2012-04-10 
VC能否编程知道一个malloc的指针指向的内存的大小?C++是可以做到的:C/C++ codestruct O{int o~O(){}}int

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分配了多少呢?

[解决办法]
VC的_msize()函数

热点排行