_C_TS_malloc_debug ()- 确定使用的太字节空间内存量 (带有可选转储和验证)
格式
#include <mallocinfo.h>
int _C_TS_malloc_debug(unsigned int dump_level, unsigned int verify_level,
struct _C_mallinfo_t *output_record, size_t sizeofoutput);语言级别
扩展
线程安全
是
描述
_C_TS_malloc_debug() 函数确定使用的太字节空间内存量,并返回给定 output_record 结构中的信息。 如果给定的 dump_level 参数大于 0 ,那么它还会转储用于 stdout的内部内存结构。 如果给定的 verify_level 参数大于 0 ,那么它还会对内部内存结构执行验证检查。 如果验证失败,将生成一条消息以 stdout 指示失败。 如果 dump_level 和 verify_level 参数都为 0 ,那么此函数提供与 _C_TS_malloc_info 函数相同的行为。
以下宏定义在 < mallocinfo.h > 包含文件中,用于指定 dump_level 参数:
| 宏 | 描述 |
|---|---|
| _C_NO_DUMPS | 未转储任何信息 |
| _C_DUMP_TOTALS | 打印每个区块的整体总计和总计 |
| _C_DUMP_CHUNKS | 打印有关每个区块的其他信息 |
| _C_DUMP_NODES | 打印每个区块内所有节点的其他信息 |
| _C_DUMP_TREE | 打印用于跟踪空闲节点的笛卡尔树的其他信息 |
| _C_DUMP_ALL | 打印所有可用信息 |
在 < mallocinfo.h > 包含文件中定义了以下宏,用于指定 verify_level 参数:
| 宏 | 描述 |
|---|---|
| _C_NO_CHECKS | 未执行任何验证检查 |
| _c_check_totals | 已验证总计是否正确 |
| _c_check_chunks | 将对每个区块执行其他验证 |
| _C_CHECK_NODES | 对每个区块内的所有节点执行其他验证 |
| _C_CHECK_TREE | 对用于跟踪可用节点的笛卡尔树执行其他验证 |
| _C_CHECK_ALL | 执行所有验证 |
| _c_check_all_and_abort(全部检查和中止 | 执行所有验证,如果任何验证失败,那么将调用 abort() 函数 |
注: 此函数用于应用程序中太字节空间内存使用情况的低级别调试。
返回值
如果成功,该函数将返回 0。 如果发生错误,那么该函数将返回负值。
示例
此示例将从
_C_TS_malloc_debug() 返回的信息打印到 stdout 。 此程序是使用 TERASPACE (*YES *TSIFC) 编译的。#include <stdio.h>
#include <stdlib.h>
#include <mallocinfo.h>
int main (void)
{
_C_mallinfo_t info;
int rc;
void *m;
/* Allocate a small chunk of memory */
m = malloc(500);
rc = _C_TS_malloc_debug(_C_DUMP_TOTALS,
_C_NO_CHECKS,
&info, sizeof(info));
if (rc == 0) {
printf("_C_TS_malloc_debug successful\n");
}
else {
printf("_C_TS_malloc_debug failed (rc = %d)\n", rc);
}
free(m);
}
/****************************************************
The output should be similar to:
total_bytes = 524288
allocated_bytes = 688
unallocated_bytes = 523600
allocated_blocks = 1
unallocated_blocks = 1
requested_bytes = 500
pad_bytes = 12
overhead_bytes = 176
Number of memory chunks = 1
Total bytes = 524288
Total allocated bytes = 688
Total unallocated bytes = 523600
Total allocated blocks = 1
Total unallocated blocks = 1
Total requested bytes = 500
Total pad bytes = 12
Total overhead bytes = 176
_C_TS_malloc_debug successful
****************************************************