Scroll to navigation

MEMCMP(3) Podręcznik programisty Linuksa MEMCMP(3)

NAZWA

memcmp - porównuje obszary pamięci

SKŁADNIA

#include <string.h>
int memcmp(const void *s1, const void *s2, size_t n);

OPIS

Funkcja memcmp() porównuje pierwsze n bajtów (każdy interpretowany jako unsigned char) obszaru pamięci s1 z obszarem s2.

WARTOŚĆ ZWRACANA

Funkcja memcmp() zwraca liczbę całkowitą mniejszą od zera, równą zeru lub większą od zera, jeżeli s1 jest odpowiednio mniejszy niż, równy lub większy niż pierwsze n bajtów s2.

Jeśli wartość zwracana jest niezerowa, dodatni lub ujemny znak tej wartości jest określany na podstawie znaku różnicy pomiędzy pierwszą parę bajtów (interpretowanych jako unsigned char), które się różnią pomiędzy s1 i s2.

Jeśli n jest zerem, zwracaną wartością jest zero.

ATRYBUTY

Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku attributes(7).

Interfejs Atrybut Wartość
memcmp() Bezpieczeństwo wątkowe MT-Safe

ZGODNE Z

POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.

UWAGI

Nie należy używać memcmp() do porównywania danych krytycznych ze względu na bezpieczeństwo, takich jak sekrety kryptograficzne, ponieważ wymagany czas procesora zależy od liczby równający się sobie bajtów. W zamian, wymagana jest funkcja wykonująca porównanie w stałych czasie. Niektóre systemy operacyjne udostępniają taką funkcję (np. w systemie NetBSD jest to consttime_memequal()), lecz nie określono jej w specyfikacji POSIX. Pod Linuksem może być konieczne samodzielne zaimplementowanie takiej funkcji.

ZOBACZ TAKŻE

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

O STRONIE

Angielska wersja tej strony pochodzi z wydania 5.10 projektu Linux man-pages. Opis projektu, informacje dotyczące zgłaszania błędów oraz najnowszą wersję oryginału można znaleźć pod adresem https://www.kernel.org/doc/man-pages/.

TŁUMACZENIE

Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Adam Byrtek <alpha@irc.pl>, Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl>, Robert Luberda <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>

Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres manpages-pl-list@lists.sourceforge.net.

15 września 2017 r.