VC能否编程知道一个malloc的指针指向的内存的大小?

ueiwujf 2012-03-26 04:41:52
C++是可以做到的:

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的实现是不一样的:

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


如何知道C的malloc分配了多少呢?
...全文
30 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
JeanLove 2012-03-26
  • 打赏
  • 举报
回复
又发了一遍?

_msize()函数!

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧