struct mallinfo { int arena; /* Non-mmapped space allocated (bytes) */ int ordblks; /* Number of free chunks */ int smblks; /* Number of free fastbin blocks */ int hblks; /* Number of mmapped regions */ int hblkhd; /* Space allocated in mmapped regions (bytes) */ int usmblks; /* Maximum total allocated space (bytes) */ int fsmblks; /* Space in freed fastbin blocks (bytes) */ int uordblks; /* Total allocated space (bytes) */ int fordblks; /* Total free space (bytes) */ int keepcost; /* top-most,releasable space (bytes) */ };
奇怪的是,这些值通常是32位整数(!);好吧,这真的不会做,特别是对于以字节数给出的值(例如fordblks).
我猜这是以某种方式被弃用,并且其他一些设施可用于获取相同的信息.什么是替代设施?
解决方法 使用malloc_info().你需要解析它的xml输出.从 malloc_info man page:
The malloc_info() function is designed to address deficIEncIEs in
malloc_stats(3) and mallinfo(3).
malloc_info的源代码是例如
可用here.所有变量都使用size_t存储并相应打印出来,它应该适用于任何位机器.
例如.在我的系统上(glibc版本2.26)malloc_info(0,stdout)打印出以下内容:
<malloc version="1"><heap nr="0"><sizes></sizes><total type="fast" count="0" size="0"/><total type="rest" count="0" size="0"/><system type="current" size="135168"/><system type="max" size="135168"/><aspace type="total" size="135168"/><aspace type="mprotect" size="135168"/></heap><total type="fast" count="0" size="0"/><total type="rest" count="0" size="0"/><total type="mmap" count="0" size="0"/><system type="current" size="135168"/><system type="max" size="135168"/><aspace type="total" size="135168"/><aspace type="mprotect" size="135168"/></malloc>总结
以上是内存溢出为你收集整理的linux – 支持64位的mallinfo替代品?全部内容,希望文章能够帮你解决linux – 支持64位的mallinfo替代品?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)