Mac OS X の では/usr/include/secure/_string.h
、次の定義を見つけることができます。
#define memset(dest, val, len) \
((__darwin_obsz0 (dest) != (size_t) -1) \
? __builtin___memset_chk (dest, val, len, __darwin_obsz0 (dest)) \
: __inline_memset_chk (dest, val, len))
static __inline void *
__inline_memset_chk (void *__dest, int __val, size_t __len)
{
return __builtin___memset_chk (__dest, __val, __len, __darwin_obsz0(__dest));
}
memset 関数の定義をさらに掘り下げたところ、上記の結果が得られました。
とはどういう意味
(__darwin_obsz0 (dest) != (size_t) -1)
ですか? つまりsize_t
、のようなタイプですint
。(size_t) -1
?これは何
__builtin___memset_chk
ですか?それってマクロ?それはどのように定義されていますか?