_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
 ****************************************************

相关信息