Manpages

名 前

memcmp − メ モ リ ー 領 域 を 比 較 す る

書 式

#include <string.h>

int memcmp(const void *s1, const void *s2, size_t n);

説 明

memcmp() 関 数 は 、 メ モ リ ー 領 域 s1s2 の 最 初 の n バ イ ト を 比 較 す る (各 バ イ ト は unsigned char と し て 解 釈 さ れ る )。

返 り 値

memcmp() 関 数 は 、 s1 の 最 初 の n バ イ ト が s2 の 最 初 の n バ イ ト よ り も 小 さ い か 、 同 じ か 、 あ る い は 大 き い か に よ っ て そ れ ぞ れ 、 負 の 整 数 、 0、 正 の 整 数 を 返 す 。

0 で な い 値 の 場 合 、 s1s2 で 値 が 異 な っ た 最 初 の バ イ ト の 値 の 差 で 符 号 は 決 定 さ れ る (バ イ ト は unsigned char で 解 釈 さ れ る )。

n が 0 の 場 合 、 返 り 値 は 0 と な る 。

属 性

マ ル チ ス レ ッ デ ィ ン グ (pthreads(7) 参 照 )

memcmp() 関 数 は ス レ ッ ド セ ー フ で あ る 。

準 拠

SVr4, 4.3BSD, C89, C99, POSIX.1−2001.

注 意

暗 号 化 さ れ た 秘 密 な ど セ キ ュ リ テ ィ 的 に 重 要 な デ ー タ の 比 較 に は memcmp() を 使 用 し な い こ と 。 必 要 な CPU 時 間 は 値 が 等 し い バ イ ト の 量 に 依 存 す る か ら で あ る 。 そ の 代 わ り 、 一 定 時 間 で 比 較 を 実 行 す る 関 数 が 必 要 で あ る 。 い く つ か の オ ペ レ ー テ ィ ン グ シ ス テ ム で は (例 え ば NetBSD の consttime_memequal() な ど の ) 関 数 が 提 供 さ れ て い る が 、 こ の よ う な 関 数 は POSIX で は 規 定 さ れ て い な い 。 Linux で は 、 こ の よ う な 関 数 自 体 を 実 装 す る 必 要 が あ る か も し れ な い 。

関 連 項 目

bcmp(3), strcasecmp(3), strcmp(3), strcoll(3), strncasecmp(3), strncmp(3), wmemcmp(3)

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。