第 11 章 memstomp

memstomp 是一个命令行工具,可用于识别当各种标准不允许重叠时具有重叠内存区域的函数调用。它截获对 表 11.1 “由memstomp 表示的函数调用” 中列出的库功能以及每个内存重叠的调用,它会显示详细的回溯追踪以帮助您调试问题。

Valgrind 类似,memstomp 程序会检查应用程序,而无需重新编译它们。但是,这个工具比这个工具快得多,因此作为一种方便的替代方案。

Red Hat Developer Toolset 带有 memstomp 0.1.5

表 11.1. 由memstomp 表示的函数调用

功能描述

memcpy

将一个内存区域中的 n 字节复制到另一个内存区域,并返回指向第二个内存区域的指针。

memccpy

将最多 n 字节从一个内存区域复制到另一个内存区域,并在找到特定字符时停止。它将指针返回到最后写入字节的字节,如果找不到给定字符,则返回 NULL。

mempcpy

将一个内存区的 n 字节复制到另一个内存区域,并在最后写入字节后返回指针到字节。

strcpy

将字符串从一个内存区域复制到另一个内存区域,并返回指向第二个字符串的指针。

stpcpy

将字符串从一个内存区域复制到另一个内存区域,并将指针返回到第二个字符串的终止空字节。

strncpy

将一个字符串最多 n 个字符复制到另一个字符串,并将指针返回到第二个字符串。

stpncpy

将一个字符串最多 n 个字符复制到另一个字符串。它将指针返回到第二个字符串的终止空字节,或者如果字符串没有 nullterminated,则会在最后写的字节后面指向指向字节的指针。

strcat

在覆盖第二个字符串的终止 null 字节并在其末尾添加新字符串时,将一个字符串附加到另一个字符串。它将一个指向新字符串的指针。

strncat

在覆盖第二个字符串的终止 null 字节并在其末尾添加新字符串时,把最多 n 个字符附加到另一个字符串。它将一个指向新字符串的指针。

wmemcpy

memcpy()函数相当的字符,可将 n wide 字符从一个数组复制到另一个阵列,并将指针返回到第二个数组。

wmempcpy

等效于 mempcpy()函数的字符,它可将 n wide 字符从一个阵列复制到另一个阵列,并在最后写的字符后将指针返回到字节。

wcscpy

类似于 strcpy()函数的字符等式字符可将一个数组中的字符字符串复制到另一个阵列,并将指针返回到第二个数组。

wcsncpy

类似于 strncpy()函数的字符最大的字符从一个阵列复制到另一个阵列,并将指针返回到第二个字符串。

wcscat

类似于 strcat()函数的字符等字符可向另一个字符字符串附加一个广泛的字符字符串,同时覆盖第二个字符串的终止 null 字节,并在其末尾添加一个新字符串。它将一个指向新字符串的指针。

wcsncat

等效于 strncat()函数的字符可连接一个阵列最多的 n 个字符,同时覆盖第二个广字符字符串的终止的空字节并在其末尾添加一个新的字符。它将一个指向新字符串的指针。

11.1. 安装 memstomp

在 Red Hat Developer Toolset 中,memstomp 工具由 devtoolset-11-memstomp 软件包提供,并会自动安装 devtoolset-11-toolchain,如 第 1.5 节 “安装 Red Hat Developer Toolset” 所述。