请教功力深厚者—有否办法得到指针所指的一段可用内存的大小

leonatcs 2005-07-07 01:33:29
事情是这样的,我在调用fread(buffer,size,count,pf)的时候发现,如果size乘以count大于buffer所指的可用内存很多时,该函数就会返回零,我怀疑它内部至少有办法知道我给的buffer的大概大小。

总之,有没有办法得到指针所指的一段可用内存的大小呢?

例:
void getmem(void * *p)
{
*p=malloc(10);
return;
}

main()
{

void *p;
getmem(&p);
//.....这里如何知道p所指可用内存的大小呢?
}
...全文
197 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
leonatcs 2005-07-08
  • 打赏
  • 举报
回复
君真乃功力深厚也!:)





_msize()返回值是对齐后的。
xzgyb 2005-07-07
  • 打赏
  • 举报
回复
以前帖子说过的, _msize, 但_msize好像并不是标准库的
#include <malloc.h>

void * p = malloc( 100 );
int size = _msize( p );

xuanwenchao 2005-07-07
  • 打赏
  • 举报
回复
学习
jFresH_MaN 2005-07-07
  • 打赏
  • 举报
回复
系统自己知道某个指针使用了多大的内存
但是没有开发接口给我们知道
所以是不能得到的
MagicCarmack 2005-07-07
  • 打赏
  • 举报
回复
没办法!
K 2005-07-07
  • 打赏
  • 举报
回复
学习
megaboy 2005-07-07
  • 打赏
  • 举报
回复
对了,不知道你说的大于buffer很多是有多大,size*count的值不能超过2G,就是不能超过long型的最大值。
megaboy 2005-07-07
  • 打赏
  • 举报
回复
fread返回0表示一个数据都读不到,但并不表示fread知道buffer的大小,fread是不管buffer有多大的。你应该从文件那边检查你的问题,比如size*count有否超过文件的大小等等。
firstdreamer 2005-07-07
  • 打赏
  • 举报
回复
mark
zhouhuahai 2005-07-07
  • 打赏
  • 举报
回复
用引用计数功能可以找到
junguo 2005-07-07
  • 打赏
  • 举报
回复
没办法!

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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